2011-01-27 5 views
6

부여 됨으로써 피드 :보기 소스 : http://rss.packetstormsecurity.org/files/tags/exploit/일치 텍스트

난 단지 텍스트가 일치하도록이 예에서, 부모 제목 노드가 텍스트와 일치하는 XML 섹션을 반환 할은 "사이트"입니다 .

//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 />" 

답변

19

당신이 필요로하는 호출이, 내가 생각입니다 :이 대소 문자를 구분

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

하는 것으로.

XPath 함수는 건초 더미와 바늘의 두 인수를 취합니다. 이 경우, 우리는 현재 노드의 텍스트 값을 건초 더미로 사용하고 있는데, 점 (.)의 사용으로 표시됩니다.

+0

+1 정답. 당신은 * "우리는 현재 노드를 사용하고있다"*라고 썼다. 그러나'fn : contains()'함수는 두 개의 문자열 데이터 타입 인자를 기대하기 때문에'self :: node()'단축 구문 ('.')은'fn : string()'함수로 형 변환되어 ** 문자열 value ** : 모든 자손 텍스트 노드의 연결. –

관련 문제