鉴于以下HTML:
$content = '<html>
<body>
<div>
<p>During the interim there shall be nourishment supplied</p>
</div>
</body>
</html>';
我该如何将它修改为以下HTML格式:
<html>
<body>
<div>
<p>During the <span>interim</span> there shall be nourishment supplied</p>
</div>
</body>
</html>
我需要使用DomDocument完成这个任务。以下是我尝试过的方法:
$dom = new DomDocument();
$dom->loadHTML($content);
$dom->preserveWhiteSpace = false;
$xpath = new DOMXpath($dom);
$elements = $xpath->query("//*[contains(text(),'interim')]");
if (!is_null($elements)) {
foreach ($elements as $element) {
$text = $element->nodeValue;
$element->nodeValue = str_replace('interim','<span>interim</span>',$text);
}
}
echo $dom->saveHTML();
然而,这将输出实际的HTML实体,因此在浏览器中呈现如下:
During the <span>interim</span> there shall be nourishment supplied
我想应该使用createElement
和appendChild
方法来代替直接赋值nodeValue
,但我不知道如何在TextNode
字符串的中间插入一个元素?