2
  $dom= new DOMDocument('1.0', 'iso-8859-1');
  $dom->loadHTML(' <html><body> <strong>SECOND</strong> </body></html>');

  $path = new DOMXPath($dom);

  foreach($path->query('body') as $found){
      $found->nodeValue  = ' <strong>FIRST</strong> '.$found->nodeValue;
  }

var_dump($dom->saveHTML()); //It shows <strong> as "&lt;strong&gt;"

この例の「強い」タグはテキストに変換されます。実際には、そこに大きな HTML コードを追加する必要があります。そして、それは適切にフォーマットされていません。何かが後で修正されます。

これどうやってするの?

4

4 に答える 4

1

XML の新しい部分を追加するには、単純なテキストを使用する代わりに、何らかの方法でそれらから DOM ノードを作成する必要があります。

DOMDocument Fragment を使用してみてください: http://www.php.net/manual/en/domdocumentfragment.appendxml.php

または、そのページで提案されているように、追加の DOMDocument オブジェクトを作成し、ノードをループして元の DOMDocument に追加します。

于 2011-09-07T16:01:18.400 に答える
1

createCDATASection 関数を使用するだけです。$found->appendChild($dom->createCDATASection ( ' <strong>FIRST</strong> '.$found->nodeValue ));

于 2014-11-22T21:02:20.957 に答える
0
$first = new DOMElement('strong', 'first');
$path  = new DOMXPath($dom);

foreach($path->query('body') as $found)
{
  $found->insertBefore($first);
}
于 2011-09-07T16:05:19.663 に答える