我在从HTML标记中删除属性时遇到问题
$content = '<span lang="en" xml:lang="en">test</span>';
$dom = new DOMDocument;
$dom->loadHTML($content, LIBXML_HTML_NOIMPLIED);
$nodes = $dom->getElementsByTagName('*');
foreach($nodes as $node)
{
if ($node->hasAttribute('lang'))
{
$node->removeAttribute('lang');
}
if ($node->hasAttribute('xml:lang'))
{
$node->removeAttribute('xml:lang');
}
}
echo $dom->saveHTML($dom->documentElement);
但结果仍在继续
<span xml:lang="en">test</span>
为什么只删除lang
属性而不删除xml:lang="en"
?有什么想法吗?
答案 0 :(得分:1)
可能{h}中xml:lang="en"
未更正属性值$dom->loadHTML($content, LIBXML_HTML_NOIMPLIED);
//code...
echo $dom->saveHTML($dom->documentElement);
。改变这些行:
$dom->loadXML($content, LIBXML_HTML_NOIMPLIED);
//code...
echo $dom->saveXML($dom->documentElement);
到
<<