2013-11-15 3 views
2

bar 값을 추출하기 위해 PHP의 DOMXPath (또는 유사한 대안)를 사용할 수 있습니까? 그러나 다음 구조에서 값 foo을 추출 할 수 있습니까? 내 시도PHP를 사용하여 DOM 노드에서 내용을 가져올 수 있지만 자식 노드에서 가져 오지 마십시오

<div> 
    <p><span>foo</span>bar</p> 
</div> 

모든 지금까지 노드의 자손에서뿐만 아니라 내가이 경우에 원하는 것이 아니다 노드 자체 컨텐츠를 돌아왔다. 나는 그의 방법으로 내 대답을 업데이트 이후

답변

2

간단한 방법은 p 직접 자녀 텍스트 노드를 찾을 수 있습니다 :

$nodes = $xpath->query('//div/p/text()'); 

당신은 //div/ 대신에 다른 선택을 할 수 있지만, 키 비트 p/text()입니다. /은 "직접 자식 노드 만"을 의미하고 text()은 "텍스트 노드 만"을 의미합니다. 그래서 그들은 함께 "텍스트 노드 인 직접적인 어린이"를 의미합니다.

1

신용 @lonesomeday로 이동해야합니다

$dom = new DOMDocument; 
$dom->loadHTML('<div><p><span>foo</span>bar</p></div>'); 

$xpath = new DOMXPath($dom); 
$nodes = $xpath->query('//div/p/text()'); 

foreach($nodes as $node) { 
    echo $node->nodeValue . '<br>'; 
} 

Read this tutorial을 구문에 더 도움.

+0

자세한 답변과 자료를 보내 주셔서 감사합니다. 둘 다 매우 유용합니다! – Mark