PHP:显示修剪后的 HTML 标记时出现 HTML 标记问题

发布于 2024-07-18 08:43:48 字数 319 浏览 7 评论 0原文

我正在使用 Richtext 框控件在一页中发布一些数据。 我使用 HTML 标记将数据保存到我的数据库表中,例如:这是 我的粗体 text

我正在另一页中显示此列的前 50 个字符。 现在,当我保存时,如果我保存一个应用了粗体标记的句子(超过 50 个字符),并且在我的其他页面中,当我修剪此内容(用于获取前 50 个字符)时,我会丢失结束 b 标记(

我该如何解决这个问题? 我如何检查哪些所有打开的标签都没有关闭? 有没有简单的方法可以在 PHP 中做到这一点。 是否有任何功能可以删除我的整个 HTML 标签/标记并将句子作为纯文本给出?

I am using a Richtext box control to post some data in one page.
and I am saving the data to my db table with the HTML mark up Ex : This is <b >my bold </b > text

I am displaying the first 50 characters of this column in another page. Now When i am saving, if i save a Sentence (with more than 50 chars )with bold tag applied and in my other page when i trim this (for taking first 50 chars) I would lost the closing b tag (</b>) .So the bold is getting applied to rest of my contents in that page.

How can i solve this ? How can i check which all open tags are not closed ? is there anyeasy way to do this in PHP. Is there any function to remove my entire HTML tags / mark up and give me the sentence as plain text ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

嘿哥们儿 2024-07-25 08:43:48

http://php.net/strip_tags

strip_tags 函数将删除您可能拥有的任何标签。

http://php.net/strip_tags

the strip_tags function will remove any tags you might have.

云裳 2024-07-25 08:43:48

是的

$textWithoutTags = strip_tags($html);

Yes

$textWithoutTags = strip_tags($html);
清泪尽 2024-07-25 08:43:48

我通常使用 HTML::Truncate为了这。 当然,作为 Perl 模块,您将无法直接在 PHP 中使用它 - 但源代码确实显示了一种工作方法(即使用 HTML 解析器)。

另一种方法可能是像您现在所做的那样截断,然后尝试使用 Tidy。

I generally use HTML::Truncate for this. Of course, being a Perl module, you won't be able to use it directly in your PHP - but the source code does show a working approach (which is to use an HTML parser).

An alternative approach, might be to truncate as you are doing at the moment, and then try to fix it using Tidy.

夜空下最亮的亮点 2024-07-25 08:43:48

如果您希望保留 HTML 标记,但正确关闭,请参阅 PHP:截断 HTML,忽略标记。 否则,请继续阅读:

strip_tags 将删除 HTML 标签,但不会删除 HTML 实体(例如 & ;),如果被截断,仍然可能会导致问题。

为了处理实体,可以使用 html_entity_decode 在剥离标签后解码实体,然后修剪,最后重新编码具有 htmlspecialchars 的实体:(

$text = "1 < 2\n";
print $text;
print htmlspecialchars(substr(html_entity_decode(strip_tags($text), ENT_QUOTES), 0, 3));

注意使用 ENT_QUOTES 来实际转换所有实体。)

结果:

1 < 2
1 <

脚注:以上仅适用于可以解码为 ISO-8859-1 的实体。 如果您需要支持国际字符,您应该已经在使用 UTF-8 编码的字符串,并且只需在对

If you want the HTML tags to remain, but be closed properly, see PHP: Truncate HTML, ignoring tags. Otherwise, read on:

strip_tags will remove HTML tags, but not HTML entities (such as &), which could still cause problems if truncated.

To handle entities as well, one can use html_entity_decode to decode entities after stripping tags, then trim, and finally reencode the entities with htmlspecialchars:

$text = "1 < 2\n";
print $text;
print htmlspecialchars(substr(html_entity_decode(strip_tags($text), ENT_QUOTES), 0, 3));

(Note use of ENT_QUOTES to actually convert all entities.)

Result:

1 < 2
1 <

Footnote: The above only works for entities that can be decoded to ISO-8859-1. If you need support for international characters, you should already be working with UTF-8 encoded strings, and simply need to specify that in the call to html_entity_decode.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文