我已经注意到,当通过CURLOPT_FILE
告诉输出到文件时,PHP中的cURL返回不同的数据,就像通过CURLOPT_RETURNTRANSFER
告诉将输出发送到字符串时一样。PHP中的cURL返回_FILE和_RETURNTRANSFER中的不同数据
_RETURNTRANSFER
似乎剥离换行符和额外的空白区域,就像解析它显示为标准HTML代码一样。另一方面,_FILE
完全按照预期保存文件。
我已阅读了php.net上的文档,但还没有找到任何似乎解决我的问题的东西。理想情况下,我希望_RETURNTRANSFER
返回确切的内容,以便我可以消除中间文件,但我没有看到任何方式使这成为可能。
这是我使用的代码。有问题的数据是带有\ r \ n行结尾的CSV文件。
function update_roster() {
$url = "http://example.com/";
$userID = "xx";
$apikey = "xxx";
$passfields = "userID=$userID&apikey=$apikey";
$file = fopen("roster.csv","w+");
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $passfields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FILE, $file);
$variable_in_question = curl_exec ($ch);
curl_close ($ch);
fclose($file);
return $variable_in_question;
}
事实证明,错误的是不返回什么,但在路上我会有关分析它。 \ r \ n没有按照我预期的方式放入单引号时解析,切换到双引号可以解决我的问题。我没有意识到这在这样的函数调用中发挥了作用。
这只是正常:$cresult = split("\r\n", $cresult);
这不:$cresult = split('\r\n', $cresult);
是的。 PHP用双引号解释字符串的方式不同,除了正确处理特殊字符(\ r,\ n,\ t)外,还进行了字符串内插。 – 2008-09-20 14:03:28