Отделение расширения от его доменного имени

StackOverflow https://stackoverflow.com/questions/4119285

  •  29-09-2019
  •  | 
  •  

Вопрос

Я хочу обойти адреса электронной почты, и я хочу взорвать их, используя функцию взрыва PHP.

Можно отделить пользователя от домена или хоста, который делает это:

список ($ user, $ domain) = explode ('@', $ email);

Но, пытаясь взорвать домен до домена_name и domain_extention, я понял, что при взрыве их, используя «». Как аргумент, это не всегда будет foo.bar, иногда это может быть foo.ba.ar, как fooooo.co.uk

Так как отделить «fooooo.co» от «Великобритания» и позвольте Co с Fooooo. Так что, наконец, я отлучу TLD от другой части.

Я знаю, что Co.uk должен рассматриваться как TLD, но это не официально, как fooooo.nat.tn или fooooo.gov.tn

Благодарю вас.

Это было полезно?

Решение

Просто используйте strripos() Чтобы найти последнее явление ".":

$blah = "hello.co.uk";

$i = strripos($blah, ".");

echo "name = " . substr($blah, 0, $i) . "\n";
echo "TLD = " . substr($blah, $i + 1) . "\n";

Другие советы

Лучше использовать imap_rfc822_parse_adrlist или же mailparse_rfc822_parse_addresses Проанализировать адрес электронной почты, если таковые имеются. И для удаления «публичного суффикса» с доменного имени см. Мой ответ на Удалить расширение домена.

Расширение ответа Оли ...

substr($address, (strripos($address, '.') + 1));

Даст TLD без '.'. Потеряйте +1, и вы тоже получите точку.

end(explode('.', $email)); даст вам TLD. Чтобы получить доменное имя без этого, вы можете сделать любое количество других трюков по манипуляциям с строками, таких как вычитание этой длины.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top