2012-10-22 3 views
0

가능한 중복을 긁어하는 효율적인 방법 :
How to parse and process HTML with PHP?웹 페이지를

나는 웹 페이지의 머리글과 바닥 글을 (소유자가 이것을 알고) 검색하고 그것을 표시 할 새 페이지를 만들면 다른 콘텐츠를 추가 할 수 있습니다. html로 이 에코 그것을 밖으로에 내용의 HTML 양쪽을 가지고 검색

사용 CURL : 나는 다음을 수행 할 수있는 것이라고 상상 있도록 페이지 콘텐츠의 ID로 사업부 내부의 콘텐츠를 꽤 잘 구성되어 새 페이지

내 문제는 너무 PHP 잘 알지 못해서 html의 두 덩어리를 취하는 방법을 모르겠습니다. 전에 Java에서 하위 문자열을 사용했지만 PHP에서 substr은 조금 다르게 작동하는 것 같습니다. 누구든지 대안을 제시 할 수 있습니까?

감사합니다.

답변

2

하위 문자열 및 RegEx는 HTML을 처리하기에 충분한 도구가 아닙니다. DOM 파서를 사용하는 것이 가장 쉽고 (훨씬 쉽다).

DOMDocument class을 살펴보십시오. HTML 로딩을 지원하며 문서를 쉽게 탐색 할 수 있습니다.

+0

나는 substring/regex를 호출하지 않을 것입니다 ** ** 충분한 도구를 가지고 있습니다 –

+0

답장을 보내 주셔서 감사합니다. 어쨌든 DOM 구문 분석은 바닥 글을위한 최선의 방법 일 것이라고 생각하지만 헤더에 대해 뭔가 다른 것이 필요할 수도 있습니다. 이전에 생각했던대로 구조화되지 않았기 때문입니다. – MillyMonster

+0

@MillyMonster, 문서는 구조화 된 문서로 구문 분석됩니다. – Brad

0

나는 아주 비슷한 것을 일전에했습니다. jQuery, Ajax, PHP를 사용하여 페이지를 수집하고 무너 뜨 렸습니다. 내 코드의 희석 된 버전을 포함 시켰습니다.

$requestURL = $_GET['url']; 
$curl_handle=curl_init(); 
curl_setopt($curl_handle, CURLOPT_URL, $requestURL); 
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 10); 
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($curl_handle, CURLOPT_AUTOREFERER, TRUE); 
curl_setopt($curl_handle, CURLOPT_FRESH_CONNECT, TRUE); 
curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, TRUE); 
curl_setopt($curl_handle, CURLOPT_MAXREDIRS, 10); 
curl_setopt($curl_handle, CURLOPT_DNS_USE_GLOBAL_CACHE, FALSE); 
curl_setopt($curl_handle, CURLOPT_FORBID_REUSE, TRUE); 
$content = curl_exec($curl_handle); 
curl_close($curl_handle); 
echo $content; 

그런 다음 아약스를 위해 내가 사용 :

var url = /* URL you want to retrieve */; 
$.ajax({ 
     url: "get-url.php?url=" + url, 
     type: "GET", 
     dataType: "html", 
     cache: false, 
     success: function(data, textStatus, jqXHR){ 
      var header = data.find('#header').html(); 
      var footer = data.find('#footer').html(); 
      $(header_DOM).html(header); 
      $(footer_DOM).html(footer); 
     } 
    }); 

이 그냥 가이드

는 PHP를 위해 나는 CURL (GET-url.php)을 사용했다. 이 아이디어를 필요에 맞게 변경하십시오.

관련 문제