Php GET命令提供两种输出,为什么?
我使用GET命令来获取页面内容。当我在shell提示符上编写相同的命令时,它会给出正确的结果,但当我在PHP文件中使用该命令时,有时它会给出正确的结果,但有时它只给出内容的一半,即仅结束一半 Iam在shell脚本中使用以下命令:-Php GET命令提供两种输出,为什么?,php,shell,get,Php,Shell,Get,我使用GET命令来获取页面内容。当我在shell提示符上编写相同的命令时,它会给出正确的结果,但当我在PHP文件中使用该命令时,有时它会给出正确的结果,但有时它只给出内容的一半,即仅结束一半 Iam在shell脚本中使用以下命令:- GET http://www.abc.com/ -H "Referer:http://www.abcd.com/" 并在PHP文件中显示以下内容:- $data=exec('GET http://www.abc.com/ -H "Referer:http://ww
GET http://www.abc.com/ -H "Referer:http://www.abcd.com/"
并在PHP文件中显示以下内容:-
$data=exec('GET http://www.abc.com/ -H "Referer:http://www.abcd.com/"');
echo $data;
现在请告诉我,当我在php文件中使用该命令时,为什么该命令没有给出页面的全部内容。
exec
仅返回命令输出的最后一行。要返回完整输出,请通过引用传入第二个参数:
exec('GEThttp://www.abc.com/ -H“参考:http://www.abcd.com/“,&$数据)代码>
$data
将是一个每行输出一个元素的数组可能更容易:
$data = `GET http://www.abc.com/ -H "Referer:http://www.abcd.com/"`;
echo $data;
假设shell_exec函数(backtick`实际上就是这样)没有被禁用。纯php的替代方案:
$opts=数组(
“http'=>数组(
'方法'=>“获取”,
“标题”=>“引用者:\r\n”
)
);
$context=stream\u context\u create($opts);
$file=文件内容(“”,false,$context);
你到底为什么不使用curl或fopen而使用LWP?i、 公平地说,当我想很快地将代码拼凑在一起时,我会这样做。虽然,这是我使用过一次然后删除的代码。如果你不打算这样做(@original poster),我建议你看看cURL和fsockopen。
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Referer: http://www.abc.com/\r\n"
)
);
$context = stream_context_create($opts);
$file = file_get_contents('http://www.abc.com/', false, $context);