2012-10-22 47 views
0

可能重複:
How to parse and process HTML with PHP?一種有效的方式來湊網頁

我想要檢索網頁的頁眉和頁腳(業主知道這一點),並在顯示它新頁面,以便我可以添加不同的內容。該頁面與一個div裏面的內容與內容的ID非常漂亮的結構,所以我想我能做到以下幾點:

使用curl檢索HTML 取內容的HTML兩側 回聲它到一個新的頁面

我的問題是我不太PHP精明,所以我不知道如何把兩個HTML塊兩邊。我以前在Java中使用過substring,但PHP中的substr似乎有點不同。任何人都可以提出替代方案

謝謝

回答

2

子字符串和正則表達式不足以處理HTML。使用DOM解析器是最好的(也更容易)。

看看DOMDocument class。它支持加載HTML,並允許您輕鬆遍歷文檔。

+0

我甚至不會調用子字符串/正則表達式** IN **足夠的工具 –

+0

感謝您的回覆。我認爲DOM解析對於頁腳來說是我最好的選擇,但是我可能需要別的東西來替換頁眉,因爲它的結構不如我以前想象的那麼好。 – MillyMonster

+0

@MillyMonster,該文檔將被解析爲結構化文檔。 – Brad

0

我前些日子做過這件非常相似的事情。我選擇使用jQuery,Ajax和PHP來收集頁面並將其分解。我已經包含了我的代碼的稀釋版本。

對於PHP我用捲曲(GET-url.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); 
     } 
    }); 

這只是一個指南。改變這個想法以滿足您的需求。

相關問題