file_get_contents 没有返回整个网页

file_get_contents not returning entire webpage

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

以前从未发生过任何其他 URLs 我曾尝试使用相同的方法进行检索,但由于某种原因,这个特定的 URL (http://3sk.tv) 拒绝工作正确。

我使用的代码是:

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

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

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

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

因此,您不能只打印另一个网站的源代码并期望它能正常工作。它需要相同 URL.

嵌入另一个网站的最佳方式通常是只使用 iframesome alternative

该网页并未完全在服务器端生成,但它在 HTML 部分加载后严重依赖 JavaScript。如果您正在寻找在浏览器中呈现页面的方式,您可能需要一个无头浏览器 - 参见例如此绑定到 PhantomJS:http://jonnnnyw.github.io/php-phantomjs/

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

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
);
?>

应该有帮助。