DomDocumentを使用したこのコードでは、次のようになります。
<?php
$html = '<pre>one</pre><pre>two</pre><pre>three</pre><pre>four</pre>';
$doc = new DomDocument();
$doc->loadHTML($html);
$sub = $doc->getElementsByTagName("pre");
foreach($sub as $pre) {
$fragment = $doc->createDocumentFragment();
$fragment->appendXML(str_replace('&', '&', '<p>& it\'s replaced</p>'));
$pre->parentNode->replaceChild($fragment, $pre);
}
echo $doc->saveHTML();
?>
私はこの出力を取得します:
<p>& it's replaced</p>
<pre>two</pre>
<p>& it's replaced</p>
<pre>four</pre>
誰かが私に何が起こっているのか、そしてなぜすべてのpre
タグが置き換えられないのか説明できますか?