Вместо того, чтобы ломать голову над регулярным выражением (URL-адреса очень сложный), я просто использую filter_var()
, а затем пытаюсь пропинговать URL-адрес с помощью cURL :
if (filter_var($url, FILTER_VALIDATE_URL) !== false)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_exec($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status_code >= 200 && $status_code < 400)
{
echo 'URL is valid!';
}
}