我有这种 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>
我想用
s 包围 text1、text2 和 text3。最好的方法是什么?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;