За последние 24 часа нас посетили 20120 программистов и 1076 роботов. Сейчас ищут 742 программиста ...

Подскажите по регулярке

Тема в разделе "Регулярные выражения", создана пользователем Dima841, 24 апр 2019.

  1. Dima841

    Dima841 Новичок

    С нами с:
    23 апр 2019
    Сообщения:
    5
    Симпатии:
    0
    Мне нужно обработать имя домена, заменить в конце строки "-com", "-net-ru", "-org-ru", "-pp-ru", на соответствующий ".com", ".net.ru" и так далее.

    С доменом второго уровня я вроде как разобрался, а вот с доменами третьего уровня как обработать не разберусь.
    PHP:
    1. $secondPart = preg_replace('/(.*)\-([\w]{2,4})$/', '\1.\2' ,$secondPart);
    Заранее спасибо за помощь
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    непонятно. откуда берутся эти "-com", "-net-ru", "-org-ru", "-pp-ru" ?

    покажите что есть на входе, и что должно получится на выходе?
     
  3. Dima841

    Dima841 Новичок

    С нами с:
    23 апр 2019
    Сообщения:
    5
    Симпатии:
    0
    PHP:
    1. $secondPart = "my-test-domain-org-ru"
    2. // my-test-domain.org.ru
    3.  
    4. $secondPart = "my-test-domain-com"
    5. // my-test-domain.com
    6.  
    7. $secondPart = "my-test-domain-net-ru"
    8. // my-test-domain.net.ru
     
  4. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    те там(my-test-domain) всегда известный заранее домен, или может быть какие угодно.
    если могут быть любые разные, то такой пример как разруливать my-test-domain.org.ru и my-test-domain-org.ru
     
  5. Dima841

    Dima841 Новичок

    С нами с:
    23 апр 2019
    Сообщения:
    5
    Симпатии:
    0
    В строке не бывает точек, в домене.

    PHP:
    1. $secondPart = "gsergreg-net-ru"
    2. // gsergreg.net.ru
    3.  
    4. $secondPart = "lalo-organization-com"
    5. // lalo-organization.com
    6.  
    7. $secondPart = "fewfqef-adfgafdg-pp-ru"
    8. // fewfqef-adfgafdg.pp.ru
     
  6. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    и я об этом.
    есть заготовка
    Код (Text):
    1. $secondPart = "gsergreg-net-ru";
    домен второго уровня может вполне может содержать -net
    тогда, как понять, какой должен получится результат?
    такой
    gsergreg-net.ru
    или такой
    gsergreg.net.ru
     
  7. AlexProg

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

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    - заменить на точку
    str_replace()
     
  8. miltorg

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

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    Первый пробел с конца заменить на точку?

    PHP:
    1. $_= 'my-test-domain-net-ru';
    2.  
    3. print  preg_replace('/(.+)-(\w{2,3})-(\w{2,3})$/', '$1-$2.$3 ', $_);
    --- Добавлено ---
    Дальше...
    А $2 может принимать какие значения? pp, org, net ?
    --- Добавлено ---
    Невнимательно прочитал условие... Сейчас.
     
  9. miltorg

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

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    PHP:
    1. <?php
    2.  
    3. $_= '
    4. my-test-domain-net-ru
    5. my-test-domain-org-ru
    6. gsergreg-net-ru
    7. lalo-organization-com
    8. fewfqef-adfgafdg-pp-ru
    9. ';
    10.  
    11. $_= preg_replace('/(.+)-(com)/', '$1.$2', $_);
    12. $_= preg_replace('/(.+)-(net|pp|org)-(ru)/', '$1.$2.$3 ', $_);
    13.  
    14. print $_;
     
    AlexProg нравится это.