<bar>
要素を持つDOMDocument内のすべての<foo>
要素を置き換えようとしています。これを行う最善の方法は、getElementsByTagNameですべての<foo>
要素を取得し、これらを置き換える新しい要素を作成することです。DOMNodeからinnerHTMLを取得する方法
問題は、置き換えられている要素からinnerHTMLを取得することができません。 nodeValueとtextContentはどちらも内部テキストを返しますが、内部タグは取り除かれます。どうすればDOMElementから "innerHTML"に類似したものを得ることができますか?
サンプルコード:
function convertTags($doc, $type) {
$bad_nodes = $doc->getElementsByTagName($type);
foreach($bad_nodes as $bad_node) {
$good_node = $doc->createElement("bar", $bad_node->nodeValue);
$bad_node->parentNode->replaceChild($good_node, $bad_node);
}
return $doc;
}
なぜあなたは単に 'str_replace( '
kongr45gpen
@ Kongr45pen:これは実際に正規表現でHTMLを解析することを意味するためです。 – jasso