如何用DOMXPath筛选包含问号的<h2>和<h3>标题?
匹配含问号的
/
标签的XPath写法
要同时筛选出**内容包含问号“?”**的<h2>和<h3>标签,需把元素类型筛选和内容筛选的条件结合起来,以下是两种可行的XPath写法:
写法一:直接指定元素类型
$query = '//h2[contains(text(), "?")] | //h3[contains(text(), "?")]';
用|符号分隔两个独立的筛选规则,分别匹配含问号的h2和h3标签。
写法二:用name()统一匹配元素类型
$query = '//*[contains("h2 h3", name()) and contains(text(), "?")]';
通过and连接两个条件:
- 第一个条件
contains("h2 h3", name())确保元素是h2或h3 - 第二个条件
contains(text(), "?")确保元素内容包含问号
你之前代码的问题说明
- 尝试的
//h2/*[contains(text(), "?")]错误在于,h2/*是选取h2标签的子元素,而非h2本身,无法匹配到符合条件的标题标签。 - 单独的元素筛选或内容筛选规则无法满足需求,必须通过逻辑运算符(
and或|)将两个条件结合。
内容的提问来源于stack exchange,提问作者Cray
相关产品推荐
相关产品推荐

