0
請告訴我如何遍歷段落內的所有文本節點?畢竟,他們可以達到2-3級。XPath:如何迭代所有文本節點?
例如,採取以下段落:
<p>Lorem <i>ipsum dolor</i> sit <span>amet, <b><i>consectetur</i> adipisicing</b> elit</span>. Odit, sunt?</p>
在要處理的所有文本節點,並將其退回到他們的地方。
$content = '<p>Lorem <i>ipsum dolor</i> sit <span>amet, <b><i>consectetur</i> adipisicing</b> elit</span>. Odit, sunt?</p>';
$html = new DOMDocument();
$html->loadHTML($content);
$xpath = new DOMXpath($html);
$elements = $xpath->query('//descendant-or-self::p//node()');
// My processor (not working...)
foreach ($elements as $element) {
// Processed, only text nodes (not working...)
if ($element->nodeType == 3) {
function() {
return $element->nodeValue = '<span style="background-color: yellow;">' . $element->nodeValue . '</span>';
}
}
// return to the place
echo $element->C14N();
}
你需要得到這樣的結果:
<p>
<span style="background-color: yellow;">Lorem </span>
<i>
<span style="background-color: yellow;">ipsum dolor</span>
</i>
<span style="background-color: yellow;">sit </span>
<span>
<span style="background-color: yellow;">amet, </span>
<b><i>
<span style="background-color: yellow;">consectetur</span>
</i>
<span style="background-color: yellow;">adipisicing</span>
</b>
<span style="background-color: yellow;">elit</span>
</span>
<span style="background-color: yellow;">. Odit, sunt?</span>
</p>
你能澄清你的問題?看來你已經在迭代這些段落了。那麼有什麼不工作?你期望輸出什麼? – Gordon
我需要處理所有文本節點並將它們全部返回到它們的位置。你懂? –
我不知道我是否知道,因爲我不明白你在問什麼。請更新你的問題與你已經嘗試過,爲什麼這是行不通的。然後添加預期的結果。 – Gordon