PHP DOMDocument删除标记属性

时间:2016-11-24 18:55:17

标签: php html dom

我在从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"?有什么想法吗?

1 个答案:

答案 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);

<<