Php 相当于XPath中的(.*)
我试图从XPath中的正则表达式中找到一个与(.*)等价的表达式。这就是我目前拥有的: 我有一个HTML a标签,上面有一个href toPhp 相当于XPath中的(.*),php,xpath,domdocument,Php,Xpath,Domdocument,我试图从XPath中的正则表达式中找到一个与(.*)等价的表达式。这就是我目前拥有的: 我有一个HTML a标签,上面有一个href toworld/nl44/town/ANYNUMBER,其中ANYNBUMBER,所以它可以是:world/nl44/town/12345,world/nl44/town/1232被一个随机值替换(我只需要a标签的值) 查询将如下所示: $elements=$xpath->query('//a[@href=“/world/nl44/town/ANYNUMBER”]
world/nl44/town/ANYNUMBER
,其中ANYNBUMBER
,所以它可以是:world/nl44/town/12345
,world/nl44/town/1232
被一个随机值替换(我只需要a标签的值)
查询将如下所示:
$elements=$xpath->query('//a[@href=“/world/nl44/town/ANYNUMBER”]”)
中,当然ANYNUMBER
被XPath等价物(.*)替换
总而言之:
您可以使用:
XPath2.0
XPath 2.0中的*
本身可以工作:
//a[matches(@href, '/world/nl44/town/.*')]
XPath 1.0
XPath 1.0不支持基于正则表达式的模式匹配,只支持基本的字符串函数。虽然
*
没有直接的等价性,但有时可以使用(参见本例中的+1)或其他XPath 1.0忽略字符串的部分,以获得与匹配*
类似的结果。另一个例子是,通过of和字符串相等性检查可以忽略字符串的开头,从而有效地实现类似于()的功能。您是否尝试过world/nl44/town/*
?@Abracadver我使用了Alexe的解决方案,该解决方案可以完美地工作。这很好,只是说,*
与正则表达式中的*
最接近。@abracadver:您可能在考虑匹配任何元素的XPath中的*
。Lja在这里尝试匹配字符串中的任何字符。
//a[matches(@href, '/world/nl44/town/.*')]