Pat*_*rio 2 html php strip-tags
我和这个人有同样的情况。
基本上strip_tags删除标签,包括损坏的标签(文档中使用的术语)。<如果它不是 HTML 标记,是否有另一种方法不涉及删除和后面的任何文本?
我目前正在这样做:
$description = "<p>I am currently <30 years old.</p>";
$body = strip_tags(html_entity_decode($description, ENT_QUOTES, "UTF-8"), "<strong><em><u>");
echo $body;
Run Code Online (Sandbox Code Playgroud)
但是上面的代码会破坏类似的东西:
<p>I am currently <30 years old.</p>
Run Code Online (Sandbox Code Playgroud)
进入:
I am currently
Run Code Online (Sandbox Code Playgroud)
这是一个eval.in,所以你们可以明白我的意思。
您输入的 HTML 无效。所以这需要修复。您可以取代所有那些未关闭<的<第一,然后做你html_entity_decode 后 strip_tags:
$description = "<p>I am currently <30 years old.</p>";
$description = preg_replace("/<([^>]*(<|$))/", "<$1", $description);
$body = html_entity_decode(strip_tags($description, "<strong><em><u>"),
ENT_NOQUOTES, "UTF-8");
echo $body;
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用 DOM 解析器,这在某些情况下可以提供更好的结果,但您仍然需要先应用修复:
$description = "<p>I am currently <30 years old.</p>";
$description = preg_replace("/<([^>]*(<|$))/", "<$1", $description);
$doc = new DOMDocument();
$doc->loadHTML($description);
$body = $doc->documentElement->textContent;
echo $body;
Run Code Online (Sandbox Code Playgroud)