PHP DOMXPath为/@ID提供空字符串

PHP DOMXPath为/@ID提供空字符串,php,html,dom,xpath,Php,Html,Dom,Xpath,简化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="orderOverviewAnot

简化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>
返回

string(0) ""
使用Firebug Xpath检查器,它返回我需要查找的ID“orderTableSorted:orderTable:10:j_id504”


非常感谢在正确方向上的任何帮助。

XPath是一种区分大小写的语言。因此,
id
id
是完全不同的东西。在HTML示例中,
a
元素有一个属性
id
,但没有一个属性被称为
id
。这就是查询不会产生任何结果的原因

路径表达式末尾的小写
ID

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

我怀疑Firebug是否会返回大写的
ID
,而在实际的HTML中没有。

实际上在Xpath检查器中,/@ID和/@ID都起作用。但是你的解决方案成功了,非常感谢!然后,你应该考虑向Fibug开发人员提交一个bug,在我看来,只是FIY:当你使用<代码> DOMBOD::Load HTML*()/Copy> PHP的DoM文档是HTML模式,元素和属性名称是不区分大小写的。这也是正确的
DOMXPath
。@hakre感谢您提供的信息!但是我不明白为什么像user3523440所说的那样,小写的
id
“起作用了”。另外,如果DOMDocument不区分大小写,为什么您确定DOMXPath也不区分大小写呢?我必须稍微更正一下自己:xpath表达式需要使用小写元素和属性名编写。目前正在玩这一点。只需对照HTML元素和属性名称中的大小写进行检查,对于那些内容,这并不重要。这也是它不能与
@ID
一起工作的原因。FirefoxXPath可能更宽松地使用case。
//a[contains(@id,':j_id504')]/@id