Регулярное выражение для поиска доменного имени, как правильно составить?
Как правильно составить регулярное выражение? Здравствуйте.
Подскажите пожалуйста, как составить регулярку. Есть строка http://РАНДОМНЫЙ-ДОМЕН/, требуется найти РАНДОМНЫЙ-ДОМЕН (т.е. название и длина может быть произвольное, так же могут присутствовать допустимые символы: -, _, .) и заменить, для примера, на localhost.
Чего-то не могу сообразить, как выбрать между // ... /
UPD: накидал примерно такую [a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,5}, но есть загвоздка. Он неправильно обрабатывает http://localhost/ (такой вариант тоже может прилететь), как можно пофиксить?
Ответы (1 шт):
Не используйте регулярки там где это можно не делать. Вам, по сути, нужно парсить URL. Для этого есть функция parse_url(). Эта функция "знает" где должен находиться хост и какие символы там могут быть. Она сможет парсить и http://localhost/ и http://user:[email protected]:80/abc//XYZ/?x=//!!/#section2