我知道之前已多次询问过这个问题,但这次应该是最后一次,因为解决方案应该是通用的,并且任何人都可以在任何地方使用该代码。这个项目 所以问题是:如何使用curl以与生成数组的get_headers相同的方式获取任何网站标题。
答案 0 :(得分:0)
我知道我正在回答我自己的问题,但因为我自己一直在研究代码。
我正在查看stackoverflow和其他网站上的一些答案,因此我将使用简单的代码这提供了普遍和独特的结果。
我希望我不必解释如何使用代码,因为它是由简单的逻辑构成的。
<?php
function curl_get_headers($base_url){
if(ini_get('allow_url_fopen')){
$result_header = get_headers($base_url);
}elseif(in_array('curl', get_loaded_extensions())){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $base_url);
if(strpos($base_url,'https') !== false){
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, true);
$response = curl_exec($ch);
curl_close($ch);
preg_match_all('/(.*)/',$response,$results);
foreach($results AS $result_key=>$result_array){
foreach($result_array AS $value){
if(strlen($value)>=10){
$string = preg_replace('/\s+$/','',$value);
$result[$result_key][] = $string;
}
}
}
$result_header = end($result);
}else{
/* Because we got this far, tell the user what to do! */
die('<h1 align="center">Server error : allow_url_fopen and curl is not enabled,<br />please ask your webhosting to enable one of the option!</h1>');
}
return $result_header;
}
?>