2015-10-26 28 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