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

Get email domain name without name before @ and tld

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

我有以下有效代码和 returns gmail 用于 john@gmail.com 电子邮件地址,但 returns co 用于 john@gmail.co.uk 电子邮件地址。

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

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

echo $domain;

谁能告诉我如何修改上面的代码,以便它也适用于 gmail.co.uk 个地址?

非常感谢,

约翰

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

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

并执行爆炸

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

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

您可以使用 2 个爆炸

数组上的

explodereverse 函数不是必需的,preg_replace 本身就可以:

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

输出:

gmail.co.uk