2011-04-22 123 views
0

有没有从其他站点读取源代码? 源代码为HTML,当你点击一个网站,然后“源代码”。用PHP阅读源代码

我已经试过:

<? $f = fopen ("http://www.example.com/f", r); 
echo $f; 
?> 

它没有工作。我该怎么做呢?

+0

怎么没有你贴的代码工作? – 2011-04-22 16:15:49

+0

@Kevin:因为'f'是对已打开文件的引用 – HyderA 2011-04-22 16:36:47

+0

@ gAMBOOKa,gah,duh。 – 2011-04-22 16:41:57

回答

6

尝试

<?php 
$f = file_get_contents("http://www.site.com/f"); 
echo $f; 
?> 
+2

将'echo $ f'更改为'echo htmlspecialchars($ f)',您将查看实际的源代码。当然,这一切都假设在ini中启用了'allow_url_fopen'。 – 2011-04-22 16:15:24

+0

Nick Weaver和Kevin Peno谢谢!这就是我一直在寻找的!我很感激!我不能够感谢你。谢谢。 – Muazam 2011-04-22 18:35:52

1

你可以使用curl抢到遥控器HTML,打印时我一定要清理它,以便观看浏览器不尝试呈现或执行脚本。 (毕竟,你不能保证控制远程HTML的内容 - 它可能是恶意的) -

或者,你可以使用shell命令将其抓到一个临时文件,然后读入该文件。卷曲二进制本身可以被刺激为你做这个。 (wget -O/tmp/sometempfile http://www.site.com/f)但注意这是危险的,并且可能会引起系统管理员观看系统的“警报”。调用wget et al和在/ tmp /中转储通常是有人在闯入PHP应用程序时尝试执行的第一件事。

+1

他正在用fopen下载一个网站,我想你的答案只会让他迷惑。 – HyderA 2011-04-22 16:11:06

1

这一切都取决于你有什么资格作为“来源”。要抓住从一个站点的输出,你可以使用curl

$ch = curl_init('http://www.google.ca'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

$data = curl_exec($ch); 
echo $data; 

如果你在谈论的页面的服务器端源,则没有,有没有办法,你可以做到这一点(我希望这没有你在说什么:))

+2

不要忘记使用'htmlspecialchars'来查看源代码而不是渲染它。 – 2011-04-22 16:16:34

+0

@Kevin:+1 - 绝对:) – 2011-04-22 16:19:44

+0

Demian Brecht @我得到这个错误“调用未定义的函数curl_init()”。这和第一张贴有什么区别?非常感谢:D – Muazam 2011-04-22 18:40:20

0

用于读取远程网页内容(源),在其他一些网站:

<?php 

$linktopage = "http://www.google.com/index.html"; 
$sourcecode = file_get_contents($linktopage); 
echo $sourcecode; 

?> 
+1

与Nick的回答有什么不同? – HyderA 2011-04-22 16:28:53

+1

考虑到最小的时差,它不是一个真正的双重职位,答案是正确的:P – 2011-04-22 16:33:38

+0

尼克的答案是3点。在回答之前通过查看回答的问题来避免重复是很好的。 – HyderA 2011-04-22 16:42:47