加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 使用curl替代fgetcsv的fopen文件资源

发布时间:2020-12-13 18:01:01 所属栏目:PHP教程 来源:网络整理
导读:是否可以进行curl,访问URL和结果作为文件资源?喜欢fopen怎么做. 我的目标: 解析CSV文件 将它传递给fgetcsv 我的阻挠:fopen被禁用 我的一大堆代码(fopen) $url = "http://download.finance.yahoo.com/d/quotes.csv?s=USDEUR=Xf=sl1d1t1ne=.csv";$f = fopen
是否可以进行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’)打开它;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读