2

DOMXPATHを使用してタグからすべてを削除しましたが、正常に機能します。 attributesp

// 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" ) );
    }

}

しかし、私はその見返りにこのエラーがあります、

キャッチ可能な致命的なエラー:DOMElement :: removeAttributeNode()に渡される引数1は、ブール値で指定されたDOMAttrのインスタンスである必要があります。

スタイル attributeのみを削除するにはどうすればよいですか?

4

1 に答える 1

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 );
}

(テストされていません、申し訳ありませんが、ここにサーバーがインストールされていません)

于 2012-03-27T15:28:21.023 に答える