我有这种方式验证网址:
if(!filter_var($url_validity_check, FILTER_VALIDATE_URL) || !preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i", $url_validity_check) )
{
但事实证明,对于某些网址来说,它是无用的......这是验证网址的最佳方法吗?是通过发送curl请求并期望响应代码不是404?或通过IP检查它,看看它得到了什么IP?是否有更好,更安全的方式?
我也有这段代码:
$http = curl_init($url);
curl_setopt($http, CURLOPT_MAXREDIRS, 4);
curl_setopt($http, CURLOPT_FOLLOWLOCATION, true);
$result = curl_exec($http);
$http_status = curl_getinfo($http, CURLINFO_HTTP_CODE);
curl_close($http);
echo $http_status;
但它返回0.
**UPDATE:**
我使用这个正则表达式:
#((http|https|ftp)://(\S*?\.\S*?))(\s|\;|\)|\]|\[|\{|\}|,|\"|'|:|\<|$|\.\s)#ie
它是否足够好,或者还有什么更好的