在@和tld之前获取没有名称的电子邮件域名

时间:2016-07-22 07:23:53

标签: php preg-replace

我需要从电子邮件地址获取域名 - 所以如果电子邮件地址是john@gmail.com,我需要抓住gmail部分。

我有以下代码可以运行并返回 gmail 以获取john@gmail.com电子邮件地址,但返回 co <​​/ strong>以获取john@gmail.co.uk电子邮件地址

$user_register_email = "john@gmail.co.uk";

$domain = preg_replace( '!^.+?@(.+?)$!', '$1', $user_register_email );
$domain = explode('.', $domain);
$domain = array_reverse($domain);
$domain = "$domain[1]";

echo $domain;

任何人都可以告诉我如何修改上述代码,以便它也可以用于gmail.co.uk地址吗?

非常感谢,

约翰

3 个答案:

答案 0 :(得分:1)

$user_register_email = "john@gmail.co.uk";

$domain = explode('@', $user_register_email);
$domain = explode('.', $domain[1]);
echo $domain[0];

你可以使用2次爆炸

答案 1 :(得分:0)

您可以通过这种方式隔离域部分(@之后的字符串)

$mystring = substr(user_register_email ,strpos($user_register_email , '@') +1, 255);

并执行爆炸

答案 2 :(得分:0)

数组上的

explodereverse函数不是必需的,preg_replace本身就没问题:

$domain = preg_replace( '!^.+?([^@]+)$!', '$1', $user_register_email );

<强>输出:

gmail.co.uk