Проверка URL на php
26.01.2009 от
Андрей Зарубин
Сейчас делаю новый проектик и по ходу пьесы сталкиваюсь с различными задачами на php.
Одно из последних — проверка URL на корректность и выделение из него доменного имени. То есть, если мы имеем введенные пользолвателем данные вида http://azarubin.com, нужно проверить это на корректность (с помощью регулярных выражений), после чего вырезать из URL домен и проверить его на наличие в БД, чтобы не дублировать. Причем, при проверке домена нужно учитывать что в URL может присутствовать www, которое тоже нужно отрезать, чтобы URL вида http://www.azarubin.com считался тем же, что и URL вида http://azarubin.com, и чтобы оттуда был вырезан домен azarubin.com, а не www.azarubin.com. При этом субдомены трогать нельзя, то есть если был введен URL http://huy.azarubin.com, вырезанный домен должен быть не azarubin.com, а huy.azarubin.com.
Вот что я набросал:
Проверка URL на валидность
Функция “вырезания” домена из URL
{
$parts = parse_url($url);
$host = $parts['host'];
if (in_array("www", explode(".", $host)))
{
$just_domain = explode("www.", $host);
return $just_domain[1];
}
else
{
return $host;
}
} ?>
Использование функции
__
У вас уже есть сайт и вы хотите заказать продвижение сайта? Обратитесь в Биплан, они профессионалы своего дела.
Рубрики: php |
azarubin.com
03.03.2009 в 21:00
Вроде все верно…
18.05.2009 в 17:18
Проверка URL на валидность работает не правельно)
Например закинем туда http://notebook-best-deals.com
18.05.2009 в 17:44
Как вариант
preg_match(”/^(http(s)?:\/\/)(([^\/]+\.)+)\w{2,}(\/)?.*$/i”, $url)
18.05.2009 в 19:19
Да, там косяк, я забыл тогда обновить пост, когда сам обнаружил его
15.01.2010 в 20:17
На самом деле проверка урла не имеет смысла. Универсального решения нет из-за огромного числа вариантов формата урла.
23.02.2010 в 16:47
Не учтена проверка в каком регистре написан урл, in_array регистрозависима и споткнется на WWW
27.02.2010 в 21:38
Да какая то проверка? Ссылки явно не все будут проходить, а такой код уже в нете давно.
>Вот что я набросал
Не правда