如何仅使用DOMXPATH删除样式属性?

时间:2012-03-27 15:19:31

标签: php xpath php-5.3 domxpath

我使用DOMXPATH从attributes标记中删除所有 p并且工作正常,

// Loop all p.
foreach( $dom->getElementsByTagName( "p" ) as $p )
{
    // Loop all attributes in p.
    foreach( $p->attributes as $attrib )
    {
          // Remove all attribute   from p. 
          $p->removeAttributeNode( $attrib );
    }

}

现在我只想从p标签中删除样式 attribute

// Loop all p.
foreach( $dom->getElementsByTagName( "p" ) as $p )
{
    // Loop all attributes in p.
    foreach( $p->attributes as $attrib )
    {
          // Remove only the style attribute
      $p->removeAttributeNode( $p->getAttributeNode( "style" ) );
    }

}

但我有这个错误,

  

可捕获的致命错误:参数1传递给   DOMElement :: removeAttributeNode()必须是DOMAttr的一个实例,   boolean given ..

如何仅删除样式 attribute

1 个答案:

答案 0 :(得分:3)

替换此

// Loop all attributes in p.
foreach( $p->attributes as $attrib )
{
      // Remove only the style attribute
  $p->removeAttributeNode( $p->getAttributeNode( "style" ) );
}

有这样的事情:

// fetch style node
$sNode = $p->getAttributeNode( "style" )
// only procede, if $p actually has a style node
if ($sNode) {
  $p->removeAttributeNode( $sNode );
}

(未经测试,抱歉,我这里没有安装服务器)