由于項目要求,需要利用php做一個獲取遠程頁面html狀態碼的功能,用來判斷遠程頁面是否可以訪問,就類似那種HTML頁面狀態碼檢測工具一樣。整理了一下代碼,貼出來。有需要的可以拿去用哦。
php獲取遠程頁面的html狀態碼,有兩種方法。一種是用了php的內置函數 get_headers(),一種是用了 curl 方法。
php獲取html狀態碼的方法
方法一:
<?php
$arr = get_headers('http://feiniaomy.com');
echo $arr[0];
echo '<br/>';
$arr1 = get_headers('http://www.feiniaomy.com');
echo $arr1[0];
echo '<br/>';
$arr2 = get_headers('https://www.feiniaomy.com');
echo $arr2[0];
?>
輸出結果:
HTTP/1.1 301 Moved Permanently HTTP/1.1 301 Moved Permanently HTTP/1.1 200 OK
注:
由于測試網址(本博客url) HTTP 協議都301到了 HTTPS 協議的 www 二級域名上,所以前兩次會輸出html的301狀態碼,最后一次是直接請求的 HTTPS 協議的地址,直接返回 HTML 200的狀態碼。
方法二:
<?php
$ch = curl_init('https://www.baidu.com');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_exec($ch);
$httpcode = curl_getinfo($ch,CURLINFO_HTTP_CODE);
curl_close($ch);
?>
返回結果:200
PS:此種方法代碼有些長,如果要同時判斷多個遠程頁面的 HTML 狀態碼,則需要書寫大量的重復代碼,我們可以將它封裝成一個函數,直接用即可
函數代碼:
function GetHttpCode($url){
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_exec($ch);
$httpcode = curl_getinfo($ch,CURLINFO_HTTP_CODE);
curl_close($ch);
return $httpcode;
}
函數調用:
echo GetHttpCode('http://www.baidu.com');
echo GetHttpCode('http://feiniaomy.com');
返回結果:
200 301






