PHP擷取網域名稱及網域名稱IP的方法
最近在做的一個項目用到擷取網域名稱和IP的功能,大致有以下幾種方法。
擷取網域名稱IP的方法可以使用內建的函數gethostbyname擷取,例如:
echo gethostbyname("www.jbxue.com");
以上則會直接輸出網域名稱所對應的的IP,當然各個地方測試的結果是不一樣的,因為百度的伺服器也不只有一台,我這邊的ip是115.239.210.27;
下面是擷取網域名稱的方法,例如有一段網址是這樣的:http://www.jbxue.com/all-the-resources-of-this-blog.html
//則會輸出www.jbxue.com//全域數組echo $_SERVER[“HTTP_HOST”];
我在本地測試則會輸出localhost
第二種獲得網域名稱的方法則是使用:parse_url函數;
$url ="http://www.jbxue.com/index.php?referer=kakata.com";$arr=parse_url($url);echo ""; print_r($arr); echo "“;
這段代碼獲得一個數組,當我們列印這個數組,你會一目瞭然;
Array
(
[scheme] => http
[host] => www.jbxue.com
[path] => /index.php
[query] => referer=jbxue.com
)
scheme對應著協議,host則對應著網域名稱,path對應著執行檔案的路徑,query則對應著相關的參數;
php 擷取網域名稱資訊的第三種方法:
同樣是這一段網域名稱我們使用第三種方法擷取網域名稱,我們採用自訂函數獲得。
$url ="http://www.jbxue.com/index.php?referer=jbxue.com";get_host($url);function get_host($url){//首先替換掉http://$url=str_replace("http://","",$url);//獲得去掉http://url的/最先出現的位置$position=strpos($url,"/");//如果沒有斜杠則表明url裡面沒有參數,直接返回url,//否則截取字串if($position==false){echo $url;}else{echo substr($url,0,$position);}}?>
最後一種方法則是使用正則了,這一步比較複雜,要實現複雜的網域名稱匹配就得更複雜的正則,我只是簡單的提供一下思路,大家多嘗試。
header("Content-type:text/html;charset=utf-8");$url ="http://www.jbxue.com/index.php?referer=jbxue.com";$pattern="/(http:\/\/)?(.*)\//";if(preg_match($pattern,$url,$arr)){echo "匹配成功";echo "匹配到了".$arr[2];}?>