file_get_contents没有返回整个网页

时间:2015-12-16 14:40:37

标签: php file-get-contents

我一直在尝试使用file_get_contents检索网页内容(http://3sk.tv)。不幸的是,结果输出缺少许多元素(图像,格式化,样式等等),并且基本上看起来与我试图检索的原始页面完全不同。

我之前从未尝试使用此相同方法检索的任何其他网址,但出于某种原因,此特定网址(http://3sk.tv)拒绝正常工作。

我使用的代码是:

<?php
$homepage = file_get_contents('http://3sk.tv');
echo $homepage;
?>

我错过了什么吗?关于如何正常工作的所有建议将不胜感激。谢谢大家的时间和考虑。

4 个答案:

答案 0 :(得分:6)

这是正常的行为,因为你只是抓取文件,而不是相关的图像,样式表等......

答案 1 :(得分:4)

我有一个快速解决方法来修复相对路径

http://www.w3schools.com/tags/tag_base.asp

只需添加代码<base>代码即可。

<?php
$homepage = file_get_contents('http://3sk.tv');
echo str_replace(
   '<head>', 
   '<head><base href="http://3sk.tv" target="_blank">',
    $homepage
);
?>

它应该有所帮助。

答案 2 :(得分:3)

这是可以预料的。如果您查看源代码,您会注意到许多没有完整网址的地方( ex lib/dropdown/dropdown.css)。这告诉浏览器假设http://3sk.tv/lib/dropdown/dropdown.css。但是,在您的网站上,它将是YOURURL.COM/lib/dropdown/dropdown.css,但不存在。大部分内容都是如此。

因此,您无法打印其他网站的来源并希望它能够正常运行。它必须是相同的URL。

嵌入其他网站的最佳方式通常是使用iframesome alternative

答案 3 :(得分:2)

网页不是完全由服务器端生成的,但在HTML部分加载后它依赖于JavaScript。如果您正在寻找在浏览器中查找的页面,则可能需要使用无头浏览器 - 请参阅例如这与PhantomJS绑定:http://jonnnnyw.github.io/php-phantomjs/