[英]PHP DOMXPath Can't get content related to each other parsed from generic html classes
我正在使用php DOMXPath解析html頁面,並試圖從與類信息中的nodeValue對應的類標簽中獲取nodeValue。
<h3>
<div class="metadata">
<span class="label">Another Label</span>
<span class="info">
<a href="some-link.com">Link Name</a>
</span>
</div>
</h3>
<h3>
<div class="metadata">
<span class="label">Some Label</span>
<span class="info">
<a href="some-link.com">Link Name</a>,
<a href="another-link.com">Another Link Name</a>,
<a href="yet-another-link.com">Yet Another Link Name</a>
</span>
</div>
</h3>
我正在使用以下內容訪問內容:
$label = $xpathLabel->query("//h3/div/span[@class='label']");
$info = $xpathInfo->query("//h3/div/span[@class='info']/a");
並輸出:
foreach ($labels as $label) {
print "{$label->nodeValue}\n";
foreach($infos as $info){
print "\t{$info->nodeValue}\n";
}
}
哪個輸出:
Another Label
Link Name
Link Name
Another Link Name
Yet Another Link Name
Some Label
Link Name
Link Name
Another Link Name
Yet Another Link Name
為何會發生這種情況仍然很有意義,因為查詢是獨立的,它們的輸出是一個類中所有來自類標簽的內容,而另一個是類信息中的所有內容。
有沒有更好的方法來進行查詢,或者有什么更好的方法來輸出可以解決問題的內容?
您需要使用外部元數據 div作為循環的錨點,然后列出該元素內的標簽和信息鏈接:
$metadata = $xpathLabel->query("//h3/div[@class='metadata']");
foreach ($metadata as $group) {
$labels = $xpathLabel->query("./span[@class='label']", $group);
foreach ($labels as $label) {
print "{$label->nodeValue}\n";
}
$infos = $xpathLabel->query("./span[@class='info']/a", $group);
foreach($infos as $info){
print "\t{$info->nodeValue}\n";
}
}
<div>
元素用作DOMXpath::query
的$contextnode
參數,僅搜索當前元素的子元素。
有關完整示例,請參見https://eval.in/955491
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.