2016-11-24 131 views
1

我有從HTML標籤PHP DOM文檔刪除標籤屬性

$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

很可能xml:lang="en"未在html中修正屬性值。更改這些行:

$dom->loadHTML($content, LIBXML_HTML_NOIMPLIED); 
//code... 
echo $dom->saveHTML($dom->documentElement); 

$dom->loadXML($content, LIBXML_HTML_NOIMPLIED); 
//code... 
echo $dom->saveXML($dom->documentElement);