我正在爲一所大學創建一個網站,我們必須在該頁面的頂部包含大學的主導航。我不想重新創建導航,而是想動態加載它。使用curl加載外部網站的一部分?
首先,我想我可以使用iframe,只是修剪到導航。
然而,當一個鏈接被點擊時,它會在該框架中打開,當我需要它在一個新的窗口中。
所以,我的新計劃是用curl(或其他方式,如果有人有建議..)拉入導航。這是什麼最好的方式呢?相當新的捲曲,所以我喜歡一些代碼。
謝謝!
我正在爲一所大學創建一個網站,我們必須在該頁面的頂部包含大學的主導航。我不想重新創建導航,而是想動態加載它。使用curl加載外部網站的一部分?
首先,我想我可以使用iframe,只是修剪到導航。
然而,當一個鏈接被點擊時,它會在該框架中打開,當我需要它在一個新的窗口中。
所以,我的新計劃是用curl(或其他方式,如果有人有建議..)拉入導航。這是什麼最好的方式呢?相當新的捲曲,所以我喜歡一些代碼。
謝謝!
如果您想使用cURL檢索它,可以使用cURL網站上的這個示例:http://curl.haxx.se/libcurl/php/examples/simpleget.html。
或者,您可以使用PHP的readfile函數直接讀取頁面或file_get_contents函數中的文件(本地或外部)以將其加載到變量中(然後您可以在將其輸出到頁面之前對其進行處理)。
我最近在客戶現有的網站上做了這個黑客攻擊。
在大學網站上創建一個包含所需標題和導航欄的「佈局視圖」。除了將會告訴解析器腳本在哪裏插入內容的標誌之外,使主體爲空。
<div class="nav">
<!-- ... -->
</div>
<div class="body">
<!-- Below is the flag -->
{content}
</div>
使用下面的代碼導入佈局HTML,在頁面中插入HTML進去,然後將它輸出
// Variables
$contentForLayout = '<p>This is the page content</p>'
$pageTitle = 'Test Page';
$layoutUrl = 'http://'.$_SERVER['HTTP_HOST'].'/unilayout'; // AFAIK, cURL like the host to be there
// Get layout HTML
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $layoutUrl);
curl_setopt($ch, CURLOPT_HEADER, 0);
ob_start();
curl_exec($ch);
curl_close($ch);
$layoutHtml = ob_get_contents();
ob_end_clean();
// Insert your page HTML into the layout HTML
$layoutHtml = str_replace('{content}', $contentForLayout, $layoutHtml);
// Insert your page title into the layout HTML
$layoutHtml = preg_replace('%<title>[^<]*</title>%si', '<title>'.h($pageTitle).'</title>', $layoutHtml);
// Output
print $layoutHtml;
您可以嘗試使用這個庫http://github.com/shuber/curl並解析導航出捲曲響應使用正則表達式或HTML解析器的身體
對不起,我應該說,我沒有訪問此服務器上的代碼,我需要從HTML網站上剝離它。 – wesbos 2010-08-26 03:35:40
OK,那麼你可以使用[readfile函數](http://php.net/manual/en/function.readfile.php)來讀取遠程文件到頁面中。這會比cURL更簡單,甚至更快。此外,您可以使用[file_get_contents函數](http://php.net/manual/en/function.file-get-contents.php)將URL讀入到變量中,而不是直接將其輸出到頁面上。 – jhartz 2010-08-26 03:37:54
已更新的答案。 – jhartz 2010-08-26 03:55:08