【发布时间】:2015-04-06 05:40:09
【问题描述】:
我想获取文本节点的包装标签。给定这样一个任意的html
<html><body>
<p>salalala</p>
<ul><li>hehehe</li></ul>
<div class="main">
<div class="text">
<span style="cufon whatever blablabla">
Capture this text 1
</span>
</div>
</div>
<div class="main">
<div class="text">
text 2
</div>
</div>
</body>
</html>
我想获取“捕获此文本 1”的包装标签
<div class="main">
<div class="text">
<span style="cufon whatever blablabla">
这只是为了演示,它们可以是任何东西,但是给定一个文本匹配,我如何检索包装器标签?
我一直在考虑使用 php dom,并逐步通过树找到文本节点,然后从那里开始工作。我不确定如何提取包装标签。
$doc = new DOMDocument();
$doc->loadHTML($html);
//print_r($doc->childNodes);
print_children($doc);
function print_children($object){
if ($object->nodeName == "#text" AND strpos("Capture this text 1",trim($object->data)) !== false) {
print "Parent: ";
print_r($object->parentNode);
}
foreach($object->childNodes as $child) {
print_r($child);
print_children($child);
}
}
【问题讨论】: