我想解决电子邮件地址问题,我想使用php的爆炸功能来爆炸它们。
可以将用户与域或主机分开,如下所示:
list($ user,$ domain)= explode('@',$ email);
但是当尝试将域名分解为domain_name和domain_extention时,我意识到使用“。”爆炸它们时。作为论点,它不会永远是foo.bar,它有时可能是foo.ba.ar,如fooooo.co.uk
所以如何将“fooooo.co”与“uk”分开,并与fooooo合作。所以最后我将TLD与其他部分分开。
我知道co.uk应该被视为顶级域名,但它不是官方的,如fooooo.nat.tn或fooooo.gov.tn
谢谢。
答案 0 :(得分:2)
只需使用strripos()
查找“。”的最后一次出现:
$blah = "hello.co.uk";
$i = strripos($blah, ".");
echo "name = " . substr($blah, 0, $i) . "\n";
echo "TLD = " . substr($blah, $i + 1) . "\n";
答案 1 :(得分:1)
最好使用imap_rfc822_parse_adrlist
或mailparse_rfc822_parse_addresses
来解析电子邮件地址(如果有)。要从域名中删除“公开后缀”,请参阅my answer to Remove domain extension。
答案 2 :(得分:1)
扩大Oli的答案......
substr($address, (strripos($address, '.') + 1));
将给予TLD而不使用'。'。失去+1,你也得到了点。
答案 3 :(得分:0)
end(explode('.', $email));
会为您提供TLD。要获得没有它的域名,您可以执行任意数量的其他字符串操作技巧,例如减去该长度。