使PHP cURL跳过图像、视频等二进制数据

使PHP cURL跳过图像、视频等二进制数据,php,curl,binary,web-crawler,Php,Curl,Binary,Web Crawler,像这样设置卷曲: $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$this->domain); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,3); curl_setopt($ch,CURLOPT_FAILONERROR,TRUE); curl_setopt($c

像这样设置卷曲:

  $ch = curl_init();
      curl_setopt($ch,CURLOPT_URL,$this->domain);
      curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
      curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,3);
      curl_setopt($ch,CURLOPT_FAILONERROR,TRUE);
      curl_setopt($ch,CURLOPT_USERAGENT,"Useragent");
      curl_setopt($ch,CURLOPT_FOLLOWLOCATION,TRUE);
      curl_setopt($ch,CURLOPT_MAXREDIRS,1);
      $str = curl_exec($ch); 
      return $str;   
      $str = $this->cURL();
将url传递到一个html页面,一切正常——但是,例如,将链接direct传递到.jpg,它会返回大量乱码数据

我想确保,如果一个页面(比如)重定向到.jpg或.gif等,它将被忽略,并且只返回html页面

我似乎找不到这样的旋度设置选项

有什么想法吗


-天鹅

我的想法-使用HEAD请求,检查内容类型是否有趣(例如另一个HTML),然后发出GET数据请求


为HEAD请求设置CURLOPT_NOBODY

Curl不管内容是文本(html)还是二进制垃圾(jpg),它只会返回您告诉它获取的内容。您已经告诉curl使用“CURLOPT_FOLLOWLOCATION”选项跟踪重定向,因此它将只跟踪重定向链,直到达到常规限制,或者获得要下载的内容

如果您事先不知道URL可能包含哪些内容,则必须采取一些变通办法,例如发出一个自定义的
HEAD
请求,该请求将返回URL的正常http头,您可以从中提取响应的mime类型(
内容类型:…
),并决定是否提取响应

或者只获取URL,然后根据完整响应的头中的mime类型保留/丢弃数据