Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 相当于XPath中的(.*)_Php_Xpath_Domdocument - Fatal编程技术网

Php 相当于XPath中的(.*)

Php 相当于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”]

我试图从XPath中的正则表达式中找到一个与(.*)等价的表达式。这就是我目前拥有的:

我有一个HTML a标签,上面有一个href to
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中的
*
本身可以工作:

因此,在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/.*')]