2011-01-27 53 views

回答

5

尝试以下方法:

示例源:

$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本体元件下方的第三p元素那contains一个文字点头e值“快”。如果搜索到的术语存在于节点值内的任何位置,这将返回1或0。

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

PHP的DOM扩展支持XPath 1.0。

你也可以不用的XPath通过常规API:

$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)。

相关问题