За последние 24 часа нас посетили 22967 программистов и 1227 роботов. Сейчас ищет 721 программист ...

Помогите с регулярным выражением

Тема в разделе "PHP для новичков", создана пользователем seventh, 9 ноя 2016.

  1. seventh

    seventh Новичок

    С нами с:
    9 ноя 2016
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте, уважаемые!
    Есть строчка, призванная выявить с того ли домена передаётся ссылка. Назовём домен site.com и у него может быть множество поддоменов, вроде en.site.com, m.en.site.com и т.д.

    PHP:
    1. function affiliate($args) {
    2. $url = $args[0];
    3. // check if URL is an site.com URL
    4. if (preg_match("/^http(s?):\/\/([A-Z]+\.|)site\.com.+/ui", $url) == true) {...
    Методом тыка определил, что эта строчка не срабатывает на домены четвёртого уровня. То есть на site.com и en.site.com срабатывает как надо, а на m.en.site.com (или s.click.site.com и т.п.) не срабатывает.
    Подскажите, пожалуйста, что поправить, чтобы подходили любые ссылки с домена site.com?
    Заранее благодарю!
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    на ссылку с aliexpress похоже
     
  3. Emilien

    Emilien Активный пользователь

    С нами с:
    30 июн 2016
    Сообщения:
    246
    Симпатии:
    156
    Заменить ([A-Z]+\.|) на ([A-Z]+\.)*
    Ещё вижу в конце шаблона после site\.com стоит конструкция .+, которая означает любое количество любых символов.
    В итоге будут приняты домены вроде site.com.ua, site.com.co, site.com-blabla.ru.
    Нужно добавить / после com.
    PHP:
    1. function affiliate($args) {
    2. $url = $args[0];
    3. // check if URL is an site.com URL
    4. if (preg_match("~^https?://([A-Z]+\.)*site\.com/~i", $url)) {...
     
    denis01 и seventh нравится это.
  4. seventh

    seventh Новичок

    С нами с:
    9 ноя 2016
    Сообщения:
    2
    Симпатии:
    0
    Благодарю!
    А то тут модератор как флудить начал с ходу, я уже решил, что не стоит ждать ответов :)