xpath:如果元素包含 3 个以上的这些单词,则返回元素


xpath: if element contains more than 3 of these word, return element

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

$xp= new DomXPath($myhtmlpage);

附近但错了!

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

有什么办法?

并非完全防故障,但在 XPath 1.0 中,会有这个相当丑陋的解决方案,这里说明用于匹配至少包含 3 个顺序的元素的p元素"猫"、"苹果"、"树"、"瓶子"

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