我正在尝试获取直接节点值。例如
<font>..something not related to us......</font>
<font>..something not related to us......</font>
<font><br>Name : </font>
<font>foo</font>
<font>Company :</font>
<font>bar</font>
<font>..something not related to us......</font>
<font>..something not related to us......</font>
首先,我需要找到nodeValue Name
。如果节点值是Name,那么我需要保存该名称的foo
。
如果nodeValue是公司,那么我需要公司的nodeValue bar
。
为此,我编写了这样的代码
$nodes = $xpath->query("//font");
foreach($nodes as $node){
if($node->nodeValue = 'Name :')
echo $node->nextSibling->nodeValue;
}
请帮我搞定。我需要从当前的字体标签中找到下一个兄弟。
提前致谢!
这是我的完整代码 -
$content = "<font>..something not related to us......</font>
<font>..something not related to us......</font>
<font>Name : </font>
<font>foo</font>
<font>Company :</font>
<font>bar</font>
<font>..something not related to us......</font>
<font>..something not related to us......</font>";
$doc = new DOMDocument();
@$doc->loadHTML($content);
$xpath = new DOMXPath($doc);
$nodes = $xpath->query("//font[.='Name :']/following-sibling::font[1]/text()");
print_r($nodes);
$name = $nodes[0]->nodeValue;
答案 0 :(得分:0)
$nodes = $xpath->query("//font[.='Name : ']/following-sibling::font[1]/text()");
$name = $nodes->item(0)->nodeValue;
答案 1 :(得分:0)
试试这个...... 我遇到了同样的问题.. 我找到了以下代码的解决方案。可能会对你有用。
foreach($nodes as $node){
if($node->nodeValue = 'Name :'){
$nextNode = $node->nextSibling;
while($nextNode->nodeType == 3){
$nextNode = $nextNode->nextSibling;
}
echo $nextNode->nodeValue;
}
}
这里nodeType == 3是需要跳过的节点之间的某个空值。