PHP DOMXPath给出/ @ ID空字符串(PHP DOMXPath gives empty

2019-10-21 00:49发布

简化HTML

<tr>
<td class="orderOverviewAnotherColumn">0177-4066356</td>
<a name="orderTableSorted:orderTable:10:j_id504" id="orderTableSorted:orderTable:10:j_id504" href="#">
</tr>
<tr>
<td class="orderOverviewAnotherColumn">0177-4066357</td>
<a name="orderTableSorted:orderTable:11:j_id504" id="orderTableSorted:orderTable:11:j_id504" href="#">
</tr>
<tr>
<td class="orderOverviewAnotherColumn">0177-4066358</td>
<a name="orderTableSorted:orderTable:12:j_id504" id="orderTableSorted:orderTable:12:j_id504" href="#">
</tr>
<tr>
<td class="orderOverviewAnotherColumn">0177-4066359</td>
<a name="orderTableSorted:orderTable:13:j_id504" id="orderTableSorted:orderTable:13:j_id504" href="#">
</tr>

使用PHP下面的代码

libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->loadHTMLFile('448713409.html');
$xpath = new DOMXPath($doc);
$vRes = $xpath->query(".//*[@id='orderTableSorted:orderTable:tbody_element']/tr[contains(.,'4066356')]//a[contains(@id,':j_id504')]/@ID");

foreach ($vRes as $obj) {
    $clean[] = $obj->nodeValue;
}

$clink = implode(" ",$clean);
var_dump($clink);

返回...

string(0) ""

用Firebug的XPath检查它返回的ID “orderTableSorted:orderTable:10:j_id504”,我需要找到。

在正确的方向上没有任何的帮助深表感谢。

Answer 1:

XPath是区分大小写的语言。 因此, idID是完全不同的东西。 在你的HTML样本中, a元素都有一个属性id ,但没有那个叫ID 。 这就是为什么查询不产生任何结果。

小写的ID在你的路径表达式的末尾:

//a[contains(@id,':j_id504')]/@id

我怀疑,萤火虫会返回一个大写的ID时,在实际的HTML是没有的。



文章来源: PHP DOMXPath gives empty string for /@ID
标签: php html dom xpath