PHP 檢測 URL 格式是否正確、域名地址是否有效:
if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) {
return 'url格式不正確';
}
上面的代碼只會檢測字符格式是否正確,如果我們要進一步確定檢測域名是否有效則可以用下面的代碼:
if (!checkdnsrr($domain, 'ANY')) {
return '域名無效!';
}
改函數會檢測指定的域名是有 dns 記錄,因此是校驗一個域名最有效的方法。如果域名格式有效,dns 校驗的速度非常快的。反之如果域名格式不正確,會耗時幾秒時間返回錯誤。因此,我們可以將上面兩個函數結合起來用,首先檢測域名的 url 的格式是夠有效,然后將 url 中的域名解析出來(使用 parse_url 函數),再檢測 dns 是否有效,最終可快速確定域名是否有效。
當然也可以在前端使用 js 或者HTML5的 url 字段進行初步過濾。但對於數據要求比較嚴格的場景,后端的校驗還是必須的。