Question

Je veux travailler autour adresses e-mail et je veux les faire exploser en utilisant la fonction de exploser php.

Il est autorisé à séparer l'utilisateur du domaine ou l'hôte faisant comme ceci:

liste ($ user, $ domaine) = explode ( '@', $ e-mail);

mais en essayant de faire exploser le domaine nom_domaine et domain_extention j'ai réalisé que lorsque les explosant en utilisant le « » comme argument, il ne sera pas toujours foo.bar, il peut parfois être foo.ba.ar comme fooooo.co.uk

comment séparer « fooooo.co » de « uk » et laisser le co avec le Fooooo. donc finalement j'obtenir le TLD séparé de l'autre partie.

Je sais que co.uk est censé être traité comme TLD mais ce n'est pas officiel, comme fooooo.nat.tn ou fooooo.gov.tn

Merci.

Était-ce utile?

La solution

Il suffit d'utiliser strripos() pour trouver la dernière occurrence de "":

$blah = "hello.co.uk";

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

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

Autres conseils

Une meilleure utilisation imap_rfc822_parse_adrlist ou mailparse_rfc822_parse_addresses pour analyser l'adresse e-mail si disponible. Et pour enlever le suffixe « public » du nom de domaine, consultez ma réponse à Supprimer le domaine extension .

L'expansion sur la réponse Oli ...

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

donnera le TLD sans ''. Perdre le +1 et vous obtenez le point, aussi.

end(explode('.', $email)); vous donnera le TLD. Pour obtenir le nom de domaine sans cela, vous pouvez faire un certain nombre d'autres tours de manipulation de chaînes, comme soustrayant cette longueur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top