像这样设置curl:
$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();
将网址传递到html网页,一切顺利 - 但是例如将直接链接传递给.jpg,它会返回一堆乱码数据。
我想确保如果一个页面重定向到.jpg或.gif等,它会被忽略,只返回html页面。
我似乎找不到这样做的卷曲setopt。
有什么想法吗?
- 天鹅。
答案 0 :(得分:1)
Curl并不关心内容的文本(html)或二进制垃圾(jpg),它只会返回你告诉它的内容。你已经告诉curl使用“CURLOPT_FOLLOWLOCATION”选项跟踪重定向,所以它只会遵循重定向链直到达到常规限制,或者下载内容
如果您不知道URL可能包含的内容,则必须执行一些变通办法,例如发出自定义HEAD
请求,该请求将返回URL的正常http标头,您可以提取响应的mime类型(Content-type: ...
)并决定是否要获取它。
或者只是获取URL,然后根据完整响应标题中的mime类型保存/抛出数据。
答案 1 :(得分:0)
我的想法 - 使用HEAD请求,检查内容类型是否有趣(例如,另一个HTML),然后发出GET请求数据。
为HEAD请求设置CURLOPT_NOBODY