gpt4 book ai didi

PHP 防止 strip_tags 删除损坏的标签

转载 作者:行者123 更新时间:2023-12-02 17:26:41 28 4
gpt4 key购买 nike

我和这个情况一样this guy .

基本上strip_tags删除标签,包括损坏的标签(documentation 中使用的术语)。是否有另一种不涉及删除 < 的方法如果它不是 HTML 标记,它后面还有任何文本吗?

我目前正在这样做:

$description = "&lt;p&gt;I am currently &lt;30 years old.&lt;/p&gt;";
$body = strip_tags(html_entity_decode($description, ENT_QUOTES, "UTF-8"), "<strong><em><u>");
echo $body;

但是上面的代码会破坏如下内容:

<p>I am currently <30 years old.</p>

进入:

I am currently

评估.in

这是一个 eval.in这样你们就能明白我的意思了。

最佳答案

您输入的 HTML 无效。所以这需要修复。您可以替换所有未关闭的 <通过 &lt;首先,然后做你的html_entity_decode 之后 strip_tags :

$description = "<p>I am currently <30 years old.</p>";
$description = preg_replace("/<([^>]*(<|$))/", "&lt;$1", $description);
$body = html_entity_decode(strip_tags($description, "<strong><em><u>"),
ENT_NOQUOTES, "UTF-8");
echo $body;

查看 eval.in

或者您可以使用 DOM 解析器,这在某些情况下可以提供更好的结果,但您仍然需要先应用修复:

$description = "<p>I am currently <30 years old.</p>";
$description = preg_replace("/<([^>]*(<|$))/", "&lt;$1", $description);
$doc = new DOMDocument();
$doc->loadHTML($description);
$body = $doc->documentElement->textContent;
echo $body;

查看 eval.in

关于PHP 防止 strip_tags 删除损坏的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38022085/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com