2015-10-26 53 views
0

我想找到PHP代碼,將加載我的屏幕上的網址源頁 - 實際上我想做更多,但這是我想要實現的第一步以乾淨可靠的方式。大多數帖子都說這個問題已經被提出並回復了好幾次,但是對我而言似乎沒有什麼可靠的工作,大多數帖子都是舊的。最重要的是,我對PHP或任何Web編程都非常陌生。 無論如何,我確實發現了一些使用cURL,DOM的代碼或只是直接的函數,但對PHP版本非常敏感。 PHP 5.2,5.3,5.5和5.6是我的託管服務提供的版本。 那些在某些版本中工作,加載(顯示)URL頁面本身或者在沒有圖像的情況下以「項目符號」方式 - 但是當我們在任何網頁上執行「查看頁面源代碼」時,沒有看起來像html文檔頁。所以我的問題是,這是不可能的,或者我在這裏錯過了什麼?一說相呼應的頁面,但不是它的來源,並且也只在5.2和5.5是DOM代碼:php代碼來加載網頁的http源URL

<?php 
$dom = new DOMDocument(); 
libxml_use_internal_errors(true); 
$dom->loadHTMLFile('http://www.cisco.com/'); 
echo $dom->saveHTML(); 
?> 

我的一個其他重要的需求是我的PHP代碼到5.3工作至少現在,但如果可能的話,希望他們能在5.2到5.5的範圍內工作。任何指針?

+0

你是什麼意思的「這將加載我的屏幕上的URL的源網頁」到底是什麼?從其他頁面檢索源代碼並將其HTML檢索到瀏覽器?渲染它的圖像? ...? – fjc

+1

你正在轉儲HTML - 你的瀏覽器將會呈現它,除非你告訴它** NOT **到例如'echo htmlspecialchars($ dom-> saveHTML());'或'header('Content-type:text/plain); $ dom-> saveHTML();' –

+0

@fjc,例如:在www.cisco.com的網頁上,如果你做了一個「查看源代碼頁面」,你可以在新的瀏覽器中得到它的源代碼html文檔。 – Ben

回答

1

問題是,當您回顯HTML時,瀏覽器將其解釋爲HTML。如果你想看到它的「源」,你需要或者逃避HTML:

echo htmlspecialchars($dom->saveHTML()); 

或內容類型設置爲文本:

header("Content-Type:text/plain"); 
echo $dom->saveHTML(); 
+0

謝謝,代碼和你的線路在PHP 5.2和5.5中工作,但在5.3和5.6中是空白頁面 - 任何想法爲什麼? – Ben

0

,可隨時更換<>與正確的HTML實體,以便源將顯示在屏幕上,而不是由瀏覽器被解析爲來源:

echo str_replace('>', '&gt;', str_replace('<', '&lt;', $dom->saveHTML())); 

或者echo htmlspecialchars($dom->saveHTML());這是CLEA ner ...但上面至少讓你一窺htmlspecialchars究竟在做什麼

+0

謝謝我沒有看到你提到的兩個輸出的任何區別?但任何想法爲什麼他們在PHP 5.2和5.5而不是5.3和5.6工作? – Ben