为xpath标识符使用in-exact字符串

时间:2011-04-05 03:49:18

标签: php xpath

我发现我需要使用xpath查询找到几乎正则表达式的字符串,但是无法看到如何管理它。我正在使用的当前查询是:

  $result = $xpath->query('//ul/li[starts-with(@id, "message-")]');

导致一些误报。它应该真正寻找消息-123或消息-987等。有没有办法告诉xpath在regexp中使用类似于\ d(数字)的东西?

2 个答案:

答案 0 :(得分:0)

试试这个:

$xpath->query('//ul/li[matches(@id,"^message-\d{3}")]')

编辑:我的不好,抱歉 - 试试这个:

$xpath->query('//ul/li[php:functionString("preg_match", "/^message-\d{3}/", @id)]')

答案 1 :(得分:0)

将此XPath 1.0表达式用于'message-' + integer模式:

//ul/li[
   @id[
      starts-with(., 'message-') 
    and
      number(
         substring-after(., 'message-')
      ) 
    = floor(
         substring-after(., 'message-')
      )
   ] 
]