我正在建立一个用户可以发布链接的网站,curl(在 php 中)将抓取 url,并根据元数据格式化某些内容、打开图形标签等。我将其设置为运行同时上传使用 multi_init 和 multi_exec。我在这里为课程创建了一个要点。它应该做的是:
- 从多个 url 获取元数据
- 返回单个 json 字符串,但仅适用于内容类型为 'text/html' 的页面(因此不要为图像、js、可执行文件等的直接链接而烦恼)
问题似乎是 CURLOPT_HEADERFUNCTION 的回调。我认为当内容类型标头存在但不是 html 标头时让它返回 -1 会中止下载,但它似乎没有做任何事情(尽管检查看起来正确并且它似乎返回 -1。 ) 它似乎仍然允许任何内容类型通过。
这里具体是回调:
CURLOPT_HEADERFUNCTION => function($ch, $header){
// if they're sending a content-type header, it must be text/html
if(stripos(trim($header), "Content-Type") === 0){
list($key, $val) = explode(":", $header);
if(stripos(trim($val), "text/html") === 0){
return strlen($header);
}
else{
return -1;
}
}
else{
return strlen($header);
}
}
我尝试了 curl_close 但在回调中关闭 curl 时出错。有什么建议么?