Задача: необходимо проверить на валидность и существование URL, который отправляется пользователем через форму на сайте.
Для решения этой задачи написал простую функцию проверки, которую собственно и привожу ниже:
/**
* Функция проверки URL
*
* @param string $url
* @return boolean
*/
function checkUrl($url) {
if (empty($url)) {
return false;
}
// проверяем строку на присутствие в ее начале
// протокола (http://|ftp://)
if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
$url = "http://" . $url;
}
// проверяем строку на присутствие в ней
// валидного URL'а
if (preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $url)) {
// далее проверяем URL на существование...
// нет необходимости полностью загружать сайт,
// поэтому проверям только заголовки
return @get_headers($url);
}
return false;
}
Автор: Sergiy Kamolov