2012-07-16 2 views
1

마크 업을 포함하여 xHTML 페이지의 일부를 추출해야하는 경우가 있습니다.HTML 문서의 일부분 추출 - xHTML 마크 업을 포함해야합니다.

이 경우 정규식은 올바른 경로가 아닙니다. 정확한 div 수를 보장하지는 않습니다.

<div id="myDiv"> 
    <div><p>This is some content</p></div> 
    <div><p>This additional content</p></div> 
</div> 

그래서, 위의 코드에서, 나는 마크 업을 포함하는 <div><p>This is some content</p></div>을 추출해야합니다.

xPath를 사용하는 방법에 대해 살펴 보았습니다.이 방법을 사용하는 것으로 보입니다. 그러나 노드의 값뿐만 아니라 연결된 모든 값을 반환하는 방법을 알지 못합니다. 마크 업.

답변

1

당신이 올바른지, 이것은과 같이 DOMDocumentXPath 통해 달성 될 수있다 : the output에서, 당신은 마크 업을 포함하여, 원하는 문자열을 볼 수 있습니다

$doc = new DOMDocument(); 
$doc->loadHTML($html); // Load the HTML snippet 

$xpath = new DOMXPath($doc); 
$node = $xpath->query('//div[@id="myDiv"]/div')->item(0); // Get the <div> 

$saved_node = $doc->saveHTML($node); // Export that node 

:

string(62) "<div><p>This is some content</p></div>" 

참고 I htmlentities()을 통해 출력을 실행해야 페이지 소스를 보지 않고 <div>이 표시됩니다.

+2

고맙습니다! 나는 가까웠지만 $ doc-> saveHTML 부분을 놓치고 있었다. –

관련 문제