2010-08-26 108 views
0

我正在爲一所大學創建一個網站,我們必須在該頁面的頂部包含大學的主導航。我不想重新創建導航,而是想動態加載它。使用curl加載外部網站的一部分?

首先,我想我可以使用iframe,只是修剪到導航。

然而,當一個鏈接被點擊時,它會在該框架中打開,當我需要它在一個新的窗口中。

所以,我的新計劃是用curl(或其他方式,如果有人有建議..)拉入導航。這是什麼最好的方式呢?相當新的捲曲,所以我喜歡一些代碼。

謝謝!

回答

0

如果您想使用cURL檢索它,可以使用cURL網站上的這個示例:http://curl.haxx.se/libcurl/php/examples/simpleget.html

或者,您可以使用PHP的readfile函數直接讀取頁面或file_get_contents函數中的文件(本地或外部)以將其加載到變量中(然後您可以在將其輸出到頁面之前對其進行處理)。

+0

對不起,我應該說,我沒有訪問此服務器上的代碼,我需要從HTML網站上剝離它。 – wesbos 2010-08-26 03:35:40

+0

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

+0

已更新的答案。 – jhartz 2010-08-26 03:55:08

0

我最近在客戶現有的網站上做了這個黑客攻擊。

在大學網站上創建一個包含所需標題和導航欄的「佈局視圖」。除了將會告訴解析器腳本在哪裏插入內容的標誌之外,使主體爲空。

<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;