我在使用 PHP 修复“损坏”的 html 字符串时遇到了麻烦
我面临在 html 字符串上使用 substr 的常见问题,这会导致标签损坏。
我设法修复了所有损坏的标签,除了图像一个,因为标签本身并不完整,它甚至不是一个开始标签,
例如,假设您有一个字符串:
<div><img alt="foo" title="bar"
Run Code Online (Sandbox Code Playgroud)
我真的很想添加一个>来关闭它,而我的其他脚本知道如何div自动关闭它。
有没有人对如何捕获损坏的<img>标签并自动修复它们有任何想法?
我见过很多解决方案,包括 DOMdocument、tidy 和 HTMLpurifier,但它们似乎没有解决这个特定问题。
任何帮助,将不胜感激。
是的,您可以使用DOMDocument. (基于示例):
$html = '<div><img alt="foo" title="bar"';
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($html);
libxml_clear_errors();
$out = '';
foreach ($dom->getElementsByTagName('body')->item(0)->childNodes as $child) {
$out .= $dom->saveXML($child);
}
echo htmlentities($out);
Run Code Online (Sandbox Code Playgroud)