在Web開發中,獲取域名是一項必不可少的任務。而PHP天生地具有解析URI的能力,所以PHP獲取域名也變得非常簡單。本文將從多個方面闡述PHP獲取域名的方法和技巧。
一、PHP獲取域名地址
獲取當前頁面的域名是最常見的任務,下面是一個獲取域名的完整代碼示例:
$host = $_SERVER['HTTP_HOST']; echo "當前域名為:" . $host;
上述代碼中,$_SERVER[‘HTTP_HOST’] 是PHP內置的全局變量之一,表示當前頁面的域名地址。通過輸出該變量的值,我們就可以獲取當前域名。
除了獲取當前域名,有時候我們還需要獲取URL中的其它信息,比如請求協議(HTTP/HTTPS)、端口號等。下面是一個獲取當前URL的完整代碼示例:
$url = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http"; $url .= "://" . $_SERVER['HTTP_HOST']; $url .= $_SERVER['REQUEST_URI']; echo "當前URL為:" . $url;
上述代碼通過判斷 $_SERVER[‘HTTPS’] 是否為 on 來獲取當前協議,再通過 $_SERVER[‘HTTP_HOST’] 獲取當前域名,最後通過 $_SERVER[‘REQUEST_URI’] 獲取當前路徑,最終拼接成完整的URL。
二、PHP獲取文件名
獲取當前頁面的文件名也是常見的任務,下面是一個獲取文件名的完整代碼示例:
$filename = basename($_SERVER['PHP_SELF']); echo "當前文件名為:" . $filename;
上述代碼中,basename() 函數返迴路徑中的最後一個部分,即文件名。
三、PHP獲取域名IP
獲取當前域名對應的IP地址也是常見的任務,下面是一個獲取IP地址的完整代碼示例:
$ip = gethostbyname($_SERVER['HTTP_HOST']); echo "當前域名的IP地址為:" . $ip;
上述代碼中,gethostbyname() 函數根據域名獲取對應的IP地址。
四、PHP獲取域名前綴
獲取當前域名的前綴(即 www、blog、shop 等)也是常見的任務,下面是一個獲取前綴的完整代碼示例:
$prefix = explode('.', $_SERVER['HTTP_HOST'])[0]; echo "當前域名的前綴為:" . $prefix;
上述代碼中,explode() 函數通過 . 將域名拆分成數組,然後取下標為 0 的值,即可獲取域名的前綴。
五、PHP獲取字段名
在一些特殊場景中,可能需要獲取當前URL中某個字段的值,下面是一個獲取指定字段的完整代碼示例:
$field_name = 'id'; parse_str($_SERVER['QUERY_STRING'], $query_vars); echo "當前URL中字段 $field_name 的值為:" . $query_vars[$field_name];
上述代碼通過 parse_str() 函數將當前URL中的查詢參數解析成一個數組,然後取指定字段的值即可。
六、PHP獲取域名實例
在一些情況下,可能需要獲取一個完整的、包含協議和域名的URL,下面是一個獲取實例的完整代碼示例:
$url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; echo "當前域名實例為:" . $url;
上述代碼中,將獲取域名地址和獲取URL的代碼組合起來,即可獲取完整的域名實例。
七、PHP獲取域名的狀態
有時候我們需要判斷一個域名的狀態是否可用,下面是一個獲取域名狀態的完整代碼示例:
$url = 'http://www.example.com'; $headers = @get_headers($url); if ($headers) { $status_code = substr($headers[0], 9, 3); echo "當前域名狀態為:" . $status_code; } else { echo "當前域名不可用"; }
上述代碼通過 get_headers() 函數獲取指定域名的響應頭信息,從而獲得當前域名的狀態碼。狀態碼是 HTTP 協議定義的一種標準,用於描述當前請求的處理結果。例如,200 表示成功,404 表示找不到頁面,500 表示服務器錯誤等。通過判斷狀態碼,我們就可以大致了解當前域名的狀態。
八、PHP獲取域名解析
在一些場景下,我們需要獲取一個域名所有的解析記錄,下面是一個獲取域名解析的完整代碼示例:
$domain = 'www.example.com'; $records = dns_get_record($domain, DNS_ALL); echo "當前域名的解析記錄為:
"; foreach ($records as $record) { echo "{$record['host']} {$record['class']} {$record['type']} {$record['target']}
"; }
上述代碼通過 dns_get_record() 函數獲取指定域名的所有解析記錄,然後遍歷輸出即可。
九、PHP獲取域名whois
whois(who is)是一種查詢域名信息的協議,我們可以通過 whois 查詢某個域名的註冊信息、過期時間等。下面是一個獲取域名whois的完整代碼示例:
$domain = 'example.com'; $whois_server = 'whois.crsnic.net'; $query_string = $domain."\r\n"; $fp = fsockopen($whois_server, 43); if ($fp) { fputs($fp, $query_string); $response = ''; while (!feof($fp)) { $response .= fgets($fp, 1024); } fclose($fp); echo "當前域名的whois信息為:
".nl2br(htmlspecialchars($response)); } else { echo "連接whois服務器失敗"; }
上述代碼中,首先定義了一個 whois 服務器地址,然後通過 fsockopen() 函數連接到該服務器,並發送查詢指令。最後,將服務器返回的信息輸出即可。
十、PHP獲取域名解析記錄
如果我們只需要獲取某個域名特定類型的解析記錄,可以使用 DNS 類庫,下面是一個獲取A記錄的完整代碼示例:
$domain = 'www.example.com'; $dns = dns_get_record($domain, DNS_A); echo "當前域名的A記錄為:
"; foreach ($dns as $record) { echo "{$record['host']} {$record['class']} {$record['type']} {$record['ip']}
"; }
上述代碼通過 DNS 類庫指定要獲取的記錄類型(例如 A 記錄)並獲取所有對應的解析記錄,然後遍歷輸出即可。
結語
以上就是本文詳解 PHP 獲取域名的各種方法和技巧,希望能對你的工作有所幫助。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/154185.html