如何通过XPath获取带synopsis类的h4下子p标签内容?
解决XPath获取子段落内容的问题
你的目标HTML结构如下:
<h4 class="m-b-0 text-dark synopsis"><p>This is the text I want.</p></h4>
你当前的XPath查询//h4[contains(@class, 'synopsis')]只能定位到目标h4元素本身,并没有深入到它的子节点p,所以拿不到段落内容。可以通过两种方式解决:
直接用XPath定位到p标签的文本
调整XPath表达式,直接指向h4下的p标签文本:$result = $xpath->query("//h4[contains(@class, 'synopsis')]/p/text()"); if ($result->length > 0) { echo $result->item(0)->nodeValue; // 输出:This is the text I want. }先获取h4节点,再查询其子节点
如果已经拿到h4节点,可以基于该节点再查询内部的p标签:$h4Node = $xpath->query("//h4[contains(@class, 'synopsis')]")->item(0); if ($h4Node) { $pTextNode = $xpath->query("./p/text()", $h4Node)->item(0); if ($pTextNode) { echo $pTextNode->nodeValue; } }
需要注意的是,调用query后要先判断结果的length是否大于0,或者节点是否存在,避免出现空指针错误。
内容的提问来源于stack exchange,提问作者GFL
相关产品推荐
相关产品推荐

