XPath表达式:可选字符?

时间:2017-03-31 22:16:42

标签: dom xpath domdocument domxpath

我想找到:

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

所以 center 之前的可选空格和最后的可选分号。

我能做到:

//div[@style=’text-align:center;’ or @style=’text-align: center;’ or @style=’text-align:center’ or @style=’text-align: center’]

但是有一种“清洁”的方式吗?能够在不太长的情况下使用更多可选字符吗?

1 个答案:

答案 0 :(得分:1)

您可以先删除可选字符fe space和分号,假设它们未在所需文本中使用translate()函数,然后检查结果是否仅等于所需的文本fe&# 39;文本对齐:中心&#39; :

//div[translate(@style, ' ;', '') = 'text-align:center']

或者,当模式变得更复杂时,您可以通过PHP preg_match在XPath中使用正则表达式:

$xp->query("//div[php:function('preg_match', '~text-align:\s*center;*~', string(@style))]");

请参阅我的旧帖子中演示如何从XPath调用PHP函数的完整示例:Get hrefs that match regex expression using PHP & XPath