我正在使用cURL和PHP来获取内容类型和内容编码。我成功地获取了内容类型,但内容编码值为空。
function get_content_type_curl($url_content_type) {
$agent_content_type = $_SERVER['HTTP_USER_AGENT'];
$ch_content_type = curl_init();
curl_setopt($ch_content_type, CURLOPT_URL, $url_content_type);
curl_setopt($ch_content_type, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch_content_type, CURLOPT_HEADER, 0);
curl_setopt($ch_content_type, CURLOPT_NOBODY, 1);
curl_setopt($ch_content_type, CURLOPT_USERAGENT, $agent_content_type);
curl_setopt($ch_content_type, CURLOPT_FOLLOWLOCATION, 1);
curl_exec($ch_content_type);
$content_type = curl_getinfo($ch_content_type, CURLINFO_CONTENT_TYPE);
$content_encoding = defined('CURLINFO_CONTENT_ENCODING') ? curl_getinfo($ch_content_type, CURLINFO_CONTENT_ENCODING) : '';
//$content_encoding = curl_getinfo($ch_content_type, CURLINFO_CONTENT_ENCODING);
curl_close($ch_content_type);
return array("content_type" => $content_type, "content_encoding" => $content_encoding);
}
$result = get_content_type_curl("https://affiliatefix.com/sitemap-1.xml");
echo $result["content_type"] . "\n";
if (!empty($result["content_encoding"])) {
echo $result["content_encoding"] . "\n";
}
/**if (strpos($result["content_encoding"], "gzip") !== false) {
echo $result["content_encoding"] . "\n";
} else {
echo "No encoding".$result["content_encoding"] . "\n";
}**/
https://affiliatefix.com/sitemap-1.xml
的输出:
内容类型:application/xml; charset=utf-8
//成功获取
内容编码:gzip
//我越来越空虚了。
1条答案
按热度按时间ni65a41a1#
不知道你是怎么找到这个常量
CURLINFO_CONTENT_ENCODING
的,它没有出现在php文档或cURL文档中,要得到响应头,你需要注册一个回调函数,如下所示:另一种方法是设置
CURLOPT_HEADER
,然后手动截断头。当然,由于不需要主体,返回的字符串是整个头: