Главная    Реклама    О блоге

Проверка 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 на валидность

<? preg_match("/^(http:\/\/{1})((\w+\.){1,})\w{2,}$/i", $url) ?>

Функция “вырезания” домена из URL

<? function GET_DOMAIN($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;
     }
  } ?>

Использование функции

<? GET_DOMAIN($url); ?>

__

У вас уже есть сайт и вы хотите заказать продвижение сайта? Обратитесь в Биплан, они профессионалы своего дела.

Рубрики: php |

Комментарии (7)

  1. оптимизация сайта пишет:

    Вроде все верно…

  2. Artem пишет:

    Проверка URL на валидность работает не правельно)
    Например закинем туда http://notebook-best-deals.com

  3. Artem пишет:

    Как вариант
    preg_match(”/^(http(s)?:\/\/)(([^\/]+\.)+)\w{2,}(\/)?.*$/i”, $url)

  4. Андрей Зарубин пишет:

    Да, там косяк, я забыл тогда обновить пост, когда сам обнаружил его :)

  5. OlegEF пишет:

    На самом деле проверка урла не имеет смысла. Универсального решения нет из-за огромного числа вариантов формата урла.

  6. Alexander Korolev пишет:

    Не учтена проверка в каком регистре написан урл, in_array регистрозависима и споткнется на WWW

  7. Jensi пишет:

    Да какая то проверка? Ссылки явно не все будут проходить, а такой код уже в нете давно.

    >Вот что я набросал
    Не правда

Оставить комментарий