Задать вопрос
@AFI19

Как правильно составить регулярку для извлечение страны из домена?

Есть список доменов
  • inner.ge.site.com
  • new-site.ge

Как правильно составить регулярку, что бы получить код страны из поддомена ($patternSub) или доменной зоны ($patternDomainName)

$patternSub = '/(\.?ge)(\.[\-\w\d]+){2,}$/mui';

$patternDomainName = '/(\.ge)$/mui;


Данные паттерны работают.
Но, может их можно оптимизировать или сделать более правильно?
  • Вопрос задан
  • 261 просмотр
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
В имени домена точно не должно быть перевода строки, поэтому только /s.
По поводу /u - сложный вопрос. Лучше было бы сразу конвертировать в Punycode, что-бы оперировать только с английскими доменными именами.
Итого, вытаскиваем TLD:
$patternSub = '/(\.[\-\w\d]{2,})$/si';

Здесь аналогично. Но непонятно, $patternDomainName - это когда из доменного имени уже убран TLD, и опять нужно найти TLD (который .ge)?
$patternDomainName = '/(\.ge)$/si;
Ответ написан
https://regex101.com/r/G5GaJX/1
В примере сделана проверка на www ее просто исключаем.
https://regex101.com/r/FYZx4q/1
тут дополнительно проверяем что в конце наш основной домен

https://regex101.com/r/dClrVg/1
Объединяем оба правила и выделяем только "регион" как вы выразились
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы