将扩展名与其域名分开

时间:2010-11-07 19:29:42

标签: php explode

我想解决电子邮件地址问题,我想使用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

谢谢。

4 个答案:

答案 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_adrlistmailparse_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。要获得没有它的域名,您可以执行任意数量的其他字符串操作技巧,例如减去该长度。