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
Dom XPath表达式:可选字符?_Dom_Xpath_Domdocument_Domxpath - Fatal编程技术网

Dom XPath表达式:可选字符?

Dom XPath表达式:可选字符?,dom,xpath,domdocument,domxpath,Dom,Xpath,Domdocument,Domxpath,我想找到: <div style="text-align:center;" > <div style="text-align: center;" > <div style="text-align:center" > <div style="text-align: center" > 但是有没有“更干净”的方法呢?并且能够在不过长的情况下使用更多可选字符?您可以首先使用函数删除可选字符f.e空格和分号,假设它们未在所需文本中使用,然后检查结果是否仅

我想找到:

<div style="text-align:center;" >
<div style="text-align: center;" >
<div style="text-align:center" >
<div style="text-align: center" >

但是有没有“更干净”的方法呢?并且能够在不过长的情况下使用更多可选字符?

您可以首先使用函数删除可选字符f.e空格和分号,假设它们未在所需文本中使用,然后检查结果是否仅等于所需文本f.e“文本对齐:中心”:

//div[translate(@style, ' ;', '') = 'text-align:center']
或者,当模式变得更复杂时,可以通过PHP在XPath中使用正则表达式:


请参阅我以前文章中演示如何从XPath调用PHP函数的完整示例:。

假设您使用的是XPath 1.0,否则您将只使用matches()?但是,如果您需要XPath1.0解决方案,请这样说@MichaelKay我不知道,我正在使用PHP5.6.23,我计划很快升级到7。我唯一看到的是:DOM/XMLAPI版本20031129,libxml版本2.9.4,支持HTML,支持XPath,这是版本1.0。遗憾的是,PHP中的XML库没有跟上最新的标准。我们试图通过为Saxon/C提供一个PHP接口来纠正这一点。
//div[translate(@style, ' ;', '') = 'text-align:center']
$xp->query("//div[php:function('preg_match', '~text-align:\s*center;*~', string(@style))]");