是否可以进行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,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. 我的错误
Warning: fgetcsv() expects parameter 1 to be resource,boolean given
谢谢
假设fopen被禁用意味着“allow_url_fopen被禁用”,CURLOPT_FILE和
php://temp
的组合使这相当容易:
$f = fopen('PHP://temp','w+'); $curl = curl_init(); curl_setopt($curl,$url); curl_setopt($curl,CURLOPT_FILE,$f); // Do you need these? Your fopen() method isn't a post request // curl_setopt($curl,true); // curl_setopt($curl,$param); curl_exec($curl); curl_close($curl); rewind($f); while ($line = fgetcsv($f)) { print_r($line); } fclose($f);
基本上,这会创建一个指向“虚拟”文件的指针,而cURL会将响应存储在其中.然后你只需将指针重置为开头,可以将其视为像往常一样用fopen($url,’r’)打开它;