2012-07-04 2 views
-1

페이지의 소스 코드를 사용하는 프로그램을 작성하고 있지만 일부 인스턴스에서는 해당 부분을 무시하고 싶습니다. 궁극적으로 나는 id 네비게이션과 그 모든 내용을 가진 태그를 제거하고 HTML을 출력하려고합니다.태그 및 내용 제거

편집 해 코드 : 나는 온라인 읽은 나는이 일 것으로 예상하지만,하지 않는 것에서

<?php 
$lol = new DOMDocument(); 
$fh = fopen("test.txt", "r"); 

$lol->loadHTML(fread($fh, filesize("test.txt"))); 
$lol->saveHTML(); 

$xpath = new DOMXpath($lol); 
$nodeList = $xpath->query('//navigation'); 
foreach ($nodeList as $element) { 
    $element->parentNode->removeChild($element); 
} 

/* 
foreach($divs AS $div) { 
    if($div->getAttribute('id') == "navigation") { 
     $lol->removeChild($div); 
    } 
} 
*/ 


$out = $lol->saveHTML(); 

echo $out; 
?> 

.

의견을 보내 주시면 감사하겠습니다.

test.txt는 페이지의 소스 코드가있는 텍스트 파일입니다.

+0

jquery를 보았습니까? –

+0

PHP 여야합니다. –

+0

그래, 그래, 또 다른 웹 크롤러 ... xPath를 사용하여보십시오 : http://php.net/manual/en/domxpath.query.php 그리고 선택 '//네비게이션'(좋아,이 경우 과잉 될 수 있습니다). 또한 실제로'loadHTML'을 호출 한 후'echo $ lol-> saveHTML();'을 실행하여 실제로 제대로로드되는지 확인하십시오 ... –

답변

2

의견이 당신을 가장 좋아하는 것처럼 보입니다. XPath에 약간의 조정이 필요한 것처럼 보입니다. 당신이 ID 탐색 태그를 찾고있는 동안 $xpath->query('//navigation')<navigation> 태그를 검색합니다 :

$xpath = new DOMXpath($lol); 
$nodeList = $xpath->query("//*[@id='navigation']"); 
foreach ($nodeList as $element) { 
    $element->parentNode->removeChild($element); 
} 

의 XPath가 이런 종류의 꽤 강력하다,이 W3 tutorial 좀 더 공부를 시작하기에 좋은 장소입니다.

(작동하지 않는 경우 해당 HTML을 게시하라는 메시지가 표시됩니다).

+0

좋은 캐치, 임마! –

+0

환상적입니다. 존 감사합니다. –