使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_NOBODYCurl不管内容是文本(html)还是二进制垃圾(jpg),它只会返回您告诉它获取的内容。您已经告诉curl使用“CURLOPT_FOLLOWLOCATION”选项跟踪重定向,因此它将只跟踪重定向链,直到达到常规限制,或者获得要下载的内容 如果您事先不知道URL可能包含哪些内容,则必须采取一些变通办法,例如发出一个自定义的
HEAD
请求,该请求将返回URL的正常http头,您可以从中提取响应的mime类型(内容类型:…
),并决定是否提取响应
或者只获取URL,然后根据完整响应的头中的mime类型保留/丢弃数据