我正在構建一個PHP應用程序,允許用戶上傳廣告並在特定網站的特定頁面上進行預覽。現在,我通過截取網頁截圖,刪除廣告以及放置自己的廣告來做到這一點。這看起來很愚蠢。如何使用PHP加載外部頁面並替換該頁面上的內容?
什麼是最好的方式來獲取一個URL的內容並替換出現在該頁面上的某個特定的代碼?
我正在構建一個PHP應用程序,允許用戶上傳廣告並在特定網站的特定頁面上進行預覽。現在,我通過截取網頁截圖,刪除廣告以及放置自己的廣告來做到這一點。這看起來很愚蠢。如何使用PHP加載外部頁面並替換該頁面上的內容?
什麼是最好的方式來獲取一個URL的內容並替換出現在該頁面上的某個特定的代碼?
DOMDocument
對象DOMDocument
對象上使用XPath
取代實施例:
<?php
$dom = new DOMDocument();
$dom->strictErrorChecking = false;
$dom->loadHTMLFile("http://www.example.com");
$xpath = new DOMXPath($dom);
$logoImage = $xpath->query("//div[@id='header-logo']//a//img")->item(0);
$logoImage->setAttribute('src', 'http://www.google.com/images/logos/ps_logo2.png');
$logoLink = $xpath->query("//div[@id='header-logo']//a")->item(0);
$logoLink->setAttribute('href', 'http://www.google.com/');
echo $dom->saveHTML();
?>
的示例加載的example.com
源並用google.com
的徽標和谷歌鏈接取代徽標。
的代碼沒有任何驗證,但應該是很容易修改爲您的需求:)
我不知道完整的情況是怎麼樣,你想執行此操作。 但是基於你的問題,最好的方法是使用Ajax。
通過Ajax傳遞您要顯示的頁面的詳細信息,並在php過濾器頁面中顯示並返回所需的結果。
並且在Ajax請求結束時在特定位置顯示您的結果。
即使在JavaScript中,您也可以根據需要過濾Ajax請求返回的結果。
這一切歸結爲,如果您希望將工作做到客戶端或服務器端,客戶端可能會做更多的工作。 – 2011-06-04 05:00:56
是的尼克拉你是對的。但是當我考慮給定的情況時,它聽起來可能是用戶可能上傳多個廣告,他希望從一個位置查看他的廣告。所以只要把這個留在我腦海中,我就給予了我的回答,贊成客戶端。不過,我個人不會在客戶端進行過濾。我總是在php中準備理想的結果,只是使用js來正確顯示 – tejash 2011-06-04 05:19:37
不要誤解我的意思,客戶端通常對於最終用戶來說更加動態和更好,它只是需要更多的工作:) – 2011-06-04 05:22:09
實際上,您可以使用帶有* http *流包裝的[DOMDocument :: loadHTMLFile](http://php.net/domdocument.loadhtmlfile)並完全跳過'file_get_contents'步驟。 – netcoder 2011-06-04 04:38:34
是的,我意識到在編寫示例的同時:) – 2011-06-04 04:44:13