我遇到file_get_contents()
函数的问题:如果远程文件重定向到另一个URI,我会得到脚本中断和脚本输出的重复:
代码:
$context = stream_context_create(['http'=>['timeout'=>10]]);
$url = 'http://example.com/';
echo "URL: $url\n";
$page = file_get_contents($url,FALSE,$context);
echo "Page size: ".strlen($page);
输出:
URL: http://example.com/
URL: http://example.com/
(请注意输出重复并且没有“页面大小”输出)
预期产出:
URL: http://example.com/
Page size: 1000
我相信file_get_contents()
无法处理我在浏览器中尝试使用网址时可以看到的重定向。所以我想实现以下目标之一:
抓住错误以便能够处理这种情况
尽管有重定向
也许我可以为$context
添加更多选项?或仅方式是移至curl
?
答案 0 :(得分:2)
file_get_contents()的错误用法: http://php.net/manual/en/function.file-get-contents.php 第三个参数应该是$ context
答案 1 :(得分:1)
有很多很棒的库可以从PHP处理问题来处理curl
。我个人喜欢Guzzle和Request。您可以找到指向该库here的链接。
话虽如此,您的脚本确实存在语法错误,因为$context
是file_get_content()
的第三个参数。
应该是:
$page = file_get_contents($url, false, $context);
你可以通过extra options to your stream_context_create
。默认情况下,它遵循重定向,20是放弃之前的最大重定向数。
您确定该网址在浏览器中加载时,是否不会使用JS进行重定向?