Отделение расширения от его доменного имени
Вопрос
Я хочу обойти адреса электронной почты, и я хочу взорвать их, используя функцию взрыва 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. Чтобы получить доменное имя без этого, вы можете сделать любое количество других трюков по манипуляциям с строками, таких как вычитание этой длины.