簡體   English   中英

檢測字符串是否包含未關閉的 html 標簽 [php]

[英]detect if string contains unclosed html tags [php]

我想知道是否有可能檢測字符串是否包含未關閉的標簽,如果是這樣,請剝離該標簽或關閉他。 所以例如我有:

<p>lorem ipsum dolor..</p> some other text <em> em tag unclosed

如您所見,存在未關閉的標簽,如果我們將其呈現為 HTML,則會導致瀏覽器出現問題。 所以我想關閉那個標簽或者如果沒有關閉就剝離他(剝離實際上很容易,難的是檢測)。

在 PHP 中可能嗎?

您可以為此使用DOMDocument

$doc = new \DomDocument();
$stringToTest = \mb_convert_encoding($stringToTest, 'HTML-ENTITIES', 'UTF-8');
$doc->loadHTML($stringToTest, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
echo $doc->saveHTML();

對於您產生的示例

<p>lorem ipsum dolor..<p> some other text <em> em tag unclosed</em></p></p>

注意:首先,最好不要生成損壞的 HTML。 作為備份,您應該將其留給修復它的瀏覽器(因為瀏覽器在這方面非常出色)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM