xpath:如果元素包含多于3个这样的单词,则返回元素

时间:2013-09-21 14:13:49

标签: php regex xpath

实际上我正在尝试检索我的数组列表中包含3个或更多单词的所有html元素:

$xp= new DomXPath($myhtmlpage);

附近但错了!

$xp->query("/* my xpath expression + content +regex + count condition */");

有什么办法?

1 个答案:

答案 0 :(得分:2)

不完全是防错的,但是对于XPath 1.0,会有这个相当丑陋的解决方案,这里说明的是匹配p元素,其中至少包含3个单词,顺序为“cat”,“apple”,“tree” ,“瓶子”

.//p[
        (
            number(contains(., "cat")) +
            number(contains(., "apple")) +
            number(contains(., "tree")) +
            number(contains(., "bottle"))
         ) >= 3
     ]
  • contains(., "word")返回布尔值,如果上下文节点包含所需的单词
  • 使用number()
  • 转换为1/0表示true / false
  • 用每个单词的一个表达式加以总结
  • 并测试您想要的最少数量的单词