使用PHP关闭或修复损坏的img标记

时间:2014-09-15 10:36:38

标签: php html tags

我遇到了解决“破坏”问题的麻烦。 html字符串,使用PHP

我面临在html字符串上使用substr的常见问题,导致标签损坏。

我已设法修复所有损坏的标签,但图片标签除外,因为标签本身不完整,它甚至不是开头标签,

例如,假设您有一个字符串:

<div><img alt="foo" title="bar" 

我真的想添加一个>来关闭它,我的其他脚本知道如何自动关闭div

有没有人对如何抓住损坏的<img>代码并自动修复它们有任何想法?

我见过很多解决方案,包括DOMdocument,tidy和HTMLpurifier,但他们似乎无法解决这个具体问题。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:4)

是的,您可以使用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);