是否可以进行curl,访问URL和结果作为文件资源?喜欢fopen怎么做 .
我的目标:
-
解析CSV文件
-
将其传递给fgetcsv
我的阻挠:fopen被禁用
我的一大堆代码(fopen)
$url = "http://download.finance.yahoo.com/d/quotes.csv?s=USDEUR=X&f=sl1d1t1n&e=.csv";
$f = fopen($url, 'r');
print_r(fgetcsv($f));
然后,我正在尝试卷曲 .
$curl = curl_init();
curl_setopt($curl, CURLOPT_VERBOSE, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, false);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $param);
curl_setopt($curl, CURLOPT_URL, $url);
$content = @curl_exec($curl);
curl_close($curl);
但是,像往常一样 . $ content已经返回一个字符串 .
现在,curl有可能将其作为文件资源指针返回吗?就像fopen一样?使用PHP <5.1.x的东西 . 我的意思是,不使用str_getcsv,因为它只有5.3 .
我的错误
警告:fgetcsv()期望参数1是资源,给定布尔值
谢谢
2 回答
假设
fopen is disabled
表示“allow_url_fopen
已禁用”,CURLOPT_FILE
和php://temp的组合使这相当容易:基本上这会创建一个指向"virtual"文件的指针,而cURL会将响应存储在其中 . 然后你只需将指针重置为开头,可以将其视为像往常一样用
fopen($url, 'r');
打开它您可以使用
fopen()
创建临时文件,然后将内容fwrite()
创建到其中 . 之后,fgetcsv()
将可读取新创建的文件 . tempnam()函数应该处理任意临时文件的创建 .根据对str_getcsv()的评论,无法访问该命令的用户可以尝试以下功能 . 评论中还有其他各种方法,请务必查看 .