この種の HTML ドキュメントがあります。
<span class="class1">text1</span>
<a href="">link1</a>
<font color=""><b>text2</b></font>
<a href="">link2</a>
text3
<span class="class2">text4</span>
そして、text1、text2、text3 をsで囲みたいと思います。最善の方法は何ですか?DomDocument は、タグ付けされていない文字列をキャッチできません。text1 と text2 について getElementByTagName('tagname')->item(0)
は使用できますが、text 3 についてはどうすればよいかわかりません。
何か案は?
[編集]
Musaが提案するように、nextSiblingを使用してみました。
<?php
$html = <<<STR
<span class="class1">text1</span>
<a href="">link1</a>
<font color=""><b>text2</b></font>
<a href="">link2</a>
text3
<span class="class2">text4</span>
STR;
$doc = new DOMDocument;
$doc->loadHTML($html);
foreach ($doc->getElementsByTagName('a') as $nodeA) {
$nodeA->nextSibling->nodeValue = ' ' . $nodeA->nextSibling->nodeValue . ' ';
}
echo $doc->saveHtml();
?>
ただし、
エスケープされて変換されます&nbsp;