Задача: необходимо проверить на валидность и существование 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;
}
А если сайт на домене рф или адрес набран заглавными?
ОтветитьУдалитьНе так много руских доменов...
Удалить1. Для меня рф тока знакома других даже незнаю.
2. И нечего сложного нет чтоб пересмотреть регулярку [a-z0-9] на [a-zA-Zа-яеёА-ЯЕЁ0-9] как то так взял из головы, примеров много...
Это тоже можно (:[0-9]+) на (:[0-6]+) длинее не встречал хотя это не очень важно смысл http = (от 0 = до 4).
Тут тебе и заглавные,гласные,согласные, как хош понемай!
А если не понемаеш, зачем спрашивать... тока показал себя (плохое слово),