微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP / XPath:找到以“特定字符串开头”的文本节点?

我需要知道特定节点中是否存在特定字符串.例如,我需要知道HTML DOM的第3段中是否存在“快速棕色狐狸”.我正在使用PHP的DOMXPath.有什么建议么?

解决方法:

请尝试以下方法

示例来源:

$html = <<< HTML
<body>
    <p>the dead brown fox</p>
    <p>the slow brown fox</p>
    <p>the quick brown fox</p>
    <p>the crawling brown fox</p>
</body>
HTML;

码:

$dom = new DOMDocument;
$dom->loadXml($html);
$xp = new DOMXPath($dom);
echo $xp->evaluate('count(/body/p[3][contains(., "quick")])');

XPath将count的第3个p元素转换为contains文本节点值“quick”的body元素.如果搜索的术语存在于节点值中的任何位置,则返回1或0.

如果您需要知道节点值是否以特定短语开头,请改用starts-with function.

PHP的DOM扩展支持XPath 1.0.

您也可以通过常规API在没有XPath的情况下执行此操作:

$dom = new DOMDocument;
$dom->loadXml($html);
$thirdPara = $dom->getElementsByTagName('p')->item(2);
echo strpos($thirdPara->nodeValue, 'the quick') === 0 ? 1 : 0;

getElementsByTagName方法标签名称查找谁会想到所有元素. item调用返回这些元素中的第三个(从零开始). strpos函数查找第一次出现的字符串的位置.上面的代码段的结果将再次为1(如果节点值不以“快速”开头,则为0.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。