За последние 24 часа нас посетили 15216 программистов и 1671 робот. Сейчас ищут 799 программистов ...

Как проще вытащить домен из теста ссылки

Тема в разделе "PHP для новичков", создана пользователем Юрий Удовиченко, 12 окт 2011.

  1. Юрий Удовиченко

    Юрий Удовиченко Активный пользователь

    С нами с:
    26 сен 2011
    Сообщения:
    25
    Симпатии:
    0
    Адрес:
    Хабаровск
    Привет всем!
    Вот есть, например, ссылка - "http://www.present-dv.ru/present/current/nedv15"; Или любая другая.

    Можно ли из неё вытащить домен первого и второго уровня? - "present-dv.ru" - функциями PHP?
    Сделать такую функцию-то я могу, но чутьё подсказывает, что это уже как-то реализовано. В строковых функциях что-то найти не могу. Может через регулярки только? Но ведь в названии могут быть не только буквы...
    Подскажите пожалуйста ;)
     
  2. topy

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

    С нами с:
    16 сен 2011
    Сообщения:
    19
    Симпатии:
    0
    ну регулярками такое делается.
    смотришь все, что после http:// и до следующего слеша, а потом разбиваешь (explode), где точки разделители (подсказка: с конца)
     
  3. Draftpad

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

    С нами с:
    11 окт 2011
    Сообщения:
    8
    Симпатии:
    0
    topy, извращенец, да? Нафига, куда-то смотреть и вычислять до слешей, когда существует стандартный массив значений $_SERVER? Если вы любитель говнокода, то не нужно советовать, что-либо другим пользователям и размножать свою секту.



    PHP:
    1.  
    2. //адрес сайта "www.present-dv.ru"
    3. $z = $_SERVER["SERVER_NAME"];
    4. $z = explode(".", $z);
    5. $z = array_reverse ($z);
    6. echo print_r($z);
    7.  
    Это один из самых оптимальных вариантов.
     
  4. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
  5. Draftpad

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

    С нами с:
    11 окт 2011
    Сообщения:
    8
    Симпатии:
    0
    Gromo, и зачем это тут? Домен сайта в данном примере мы и так получаем из $_SERVER["SERVER_NAME"], нафига нам использовать другие функции, для этой же цели?
     
  6. alexfer

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

    С нами с:
    2 авг 2010
    Сообщения:
    239
    Симпатии:
    0
    Draftpad
    Вы его получаете из локального окружения, а если идет список ссылок с разными доменами, то данная ф-ция уместна
     
  7. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
     
  8. Юрий Удовиченко

    Юрий Удовиченко Активный пользователь

    С нами с:
    26 сен 2011
    Сообщения:
    25
    Симпатии:
    0
    Адрес:
    Хабаровск
    Всем спасибо. Особенно Gromo за parse_url. Действительно просто.
    А что их потом explod'ить и взять последние две - как-то сразу и не подумал.
    И, Draftpad, я действительно имел ввиду ссылки, а не текущий host, - но всё равно благодарю за array_reverse - не знал.
    Topy: Мне кажется регулярками распыляться на такое - трата ресурсов. Всё же они работают медленно. Проще было бы найти substr позиции первых '/' и всё. А регулярками - надо обусловливать все возможные данные - цифры, дефисы, буквы и пр, позицию. До конца с ними не разобрался, но мне кажется - это будет длинная фраза и система всю её будет перебирать со всеми вариантами намного дольше.