将文本与XPATH语法匹配

时间:2011-01-27 23:21:29

标签: php xml xpath simplexml

Exmple feed:view-source:http://rss.packetstormsecurity.org/files/tags/exploit/

我只想返回xml的部分,其中父标题节点中有匹配的文本,在本例中,要匹配的文本是“site”。

 //get feed with curl

 $doc = new SimpleXmlElement($xml, LIBXML_NOCDATA);

 //$result = $doc->xpath('//title'); //this works returns all the <title>'s

 $result = $doc->xpath('//title[site]');                     //doesn't work
 $result = $doc->xpath('//title[text()="site"]');           //doesn't work
 $result = $doc->xpath('//title[contains(site)]');           //doesn't work
 $result = $doc->xpath('//title[contains(text(),'Site')]');  //doesn't work


 foreach ($result as $title)
 echo "$title<br />"

1 个答案:

答案 0 :(得分:21)

我认为你需要的电话是:

$result = $xpath->query('//title[contains(.,"Site")]');

请注意,这是区分大小写的。

请注意,contains XPath函数有两个参数:haystack和needle。在这种情况下,我们使用当前节点的文本值作为haystack,使用点(.)表示。