На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ALXR
  
    > Вырезать из url домен
      Всем привет, никак не могу разобраться в следующей задаче. Чтобы пользователя не тревожить, всякими напоминаниями о не корректном вводе, я хочу на сервере обрабатывать вводимый им url, а именно, если он введет:
      ExpandedWrap disabled
        ...........
         
        - http://site.ru/ - должно вырезать site.ru
        - http://site.ru - должно вырезать site.ru
        - site.ru/ - должно вырезать site.ru
        - site.ru - так и останется
         
        - http://www.site.ru/ - должно вырезать www.site.ru
        - http://www.site.ru - должно вырезать www.site.ru
        - www.site.ru/ - должно вырезать www.site.ru
        - www.site.ru - так и останется
         
        ...........

      Т.е. мне важны www. если они есть вводимом url, а также сам домен, никаких слешей в конце и другого хлама, чисто url главной странички с www. или без www. если присутствовало

      Также после обрезания проверить на корректность

      Спасибо
      Сообщение отредактировано: TetRis -
        ExpandedWrap disabled
          (?:[a-z][-\w\d]*\.)+[a-z]{2,6}


        Есть еще IDN домены, и с ними намного больше гемороя.
          Цитата Sunny @
          ExpandedWrap disabled
            (?:[a-z][-\w\d]*\.)+[a-z]{2,6}


          Есть еще IDN домены, и с ними намного больше гемороя.

          циферки добавил в регу
          ExpandedWrap disabled
            /(?:[a-z0-9][-\w\d]*\.)+[a-z]{2,6}/i

          а как не допустить такое в урле?
          ExpandedWrap disabled
            qwe.rty--uio.com

          т.е. двойное тире, таких уролов ведь нет

          Добавлено
          Цитата Sunny @
          Есть еще IDN домены, и с ними намного больше гемороя.

          кириллические? мы их упускаем, а насколько геморно? разве не так?
          ExpandedWrap disabled
            /(?:[a-zа-я0-9][-\w\d]*\.)+[a-zа-я]{2,6}/iu
          Сообщение отредактировано: TetRis -
            Цитата TetRis @
            циферки добавил в регу

            Убери, они не верны. \d отвечает за цифры.

            Добавлено
            Цитата TetRis @
            кириллические? мы их упускаем, а насколько геморно? разве не так?

            Не только кириллица в IDN встречается. Не так.

            Добавлено
            Цитата TetRis @
            т.е. двойное тире, таких уролов ведь нет

            Их не будет, хотя вариант
            ExpandedWrap disabled
              www.site-.ru

            возможен, он не учитывается.
              Цитата Sunny @
              Убери, они не верны. \d отвечает за цифры.

              тогда так:
              ExpandedWrap disabled
                /(?:[\w\d][-\w\d]*\.)+[a-z]{2,6}/i

              а то такой урл не пропускало 123.qwer.ru

              и может лучше жестко фильтровать на зоны? ru, com? ...
              меняем
              ExpandedWrap disabled
                +[a-z]{2,6}

              на
              ExpandedWrap disabled
                +(ru|com|biz) и тд

              а то пропускает uz.com.ru.qqqq
              .qqqq как-то смотрится плохо)))

              Добавлено
              пропускает:
              ExpandedWrap disabled
                www.site-.ru
                www.si--te.ru
                В общем рега готова:
                ExpandedWrap disabled
                  (?:[\w\d][-\w\d]*\.)+(?:biz|com|info|name|net|org|[a-z]{2})

                Но есть в ней мелкие огрехи:
                ExpandedWrap disabled
                  в начале доменного имени пропускает
                  _ or __ - одно или много нижних подчеркиваний
                   
                  в центре доменного имени пропаускает
                  _ or __ - одно или много нижних подчеркиваний
                  -- - много тире
                   
                  в конце доменного имени пропускает
                  _ or __ - одно или много нижних подчеркиваний
                  - or -- - одно или много тире

                т.е.
                ExpandedWrap disabled
                  _popasike.ru - пропустило
                  __popasike.ru - пропустило
                  -popasike.ru - не пропустило
                  --popasike.ru - не пропустило
                  pop_asike.ru - пропустило
                  pop__asike.ru - пропустило
                  pop-asike.ru - пропустило
                  pop--asike.ru - пропустило
                  popasike_.ru - пропустило
                  popasike__.ru - пропустило
                  popasike-.ru - пропустило
                  popasike--.ru - пропустило

                помогите допилить :rolleyes:
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0376 ]   [ 15 queries used ]   [ Generated: 28.04.24, 18:34 GMT ]