我想把一个URL的内容放在一个字符串中并进行处理。但是,我有一个问题。
我收到此错误:
Warning: file_get_contents(http://www.findchips.com/avail?part=74ls244) [function.file-get-contents]: failed to open stream: Redirection limit reached,
我听说这是由于页面保护和标题,Cookie和其他内容。 我怎样才能覆盖它?
我也尝试过替代品,例如fread和fopen,但我想我只是不知道该怎么做。
有人可以帮我吗?
答案 0 :(得分:33)
1)本地最简单的方法
<?php
echo readfile("http://example.com/"); //needs "Allow_url_include" enable
//OR
echo include("http://example.com/"); //needs "Allow_url_include" enabled
//OR
echo file_get_contents("http://example.com/");
//OR
echo stream_get_contents(fopen('http://example.com/', "rb")); //you may use "r" instead of "rb" //needs "Allow_url_fopen" enabled
?>
2)更好的方式是CURL :
echo get_remote_data('http://example.com/?myPage', 'var2=something&var3=blabla' ); // GET & POST request
见function code here。它会自动处理 FOLLOWLOCATION 问题+远程网址会自动重新校正! (src="./imageblabla.png"
--------&gt; src="http://example.com/path/imageblabla.png"
)
p.s.GNU / Linux用户可能需要php5-curl
个包。
答案 1 :(得分:11)
使用cURL
,
通过phpinfo();
代码:
function getHtml($url, $post = null) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
if(!empty($post)) {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
答案 2 :(得分:3)
请尝试使用cURL。 cURL实现了一个cookie jar,而file_get_contents却没有。