是否有更有效的方式来获取电子邮件后缀而不是爆炸? (PHP)

时间:2011-02-25 20:20:50

标签: php email

当前代码我用来获取电子邮件后缀

$emailarray  = explode('@',$email_address);
$emailSuffix = $emailarray[1];

必须有一个更有效的功能。也许使用substr()的东西?

5 个答案:

答案 0 :(得分:9)

更短的:

$emailSuffix = end(explode('@', $email_address));

但我认为它不会比那更有效。正则表达式可能更慢。

修改

我做了一些测试,虽然这个版本比使用

快3倍
$a = explode('@', $email_address);
$foo = $a[1];

if (preg_match('~^.+@(.+)$~', $email_address, $reg))
  $foo = $reg[1];

它不符合严格标准:

  

严格标准:只应通过引用传递变量

EDIT2

$foo = substr($email_address, strpos($email_address, '@'));

与结束(爆炸(。))方法一样快,所以我建议一个。请参阅rayman86的回答和评论。

答案 1 :(得分:2)

使用正则表达式和preg_match函数,您可以使用以下内容:

$email_address = 'hello@world.com';
if (preg_match('/@(.*)$/', $email_address, $matches)) {
    echo $matches[1];
}

不确定它是否更有效(它需要多行代码;并且可能不比您的解决方案快) - 但它应该可以很好地工作。

答案 2 :(得分:1)

$emailSuffix = substr($email_address, strpos($email_address, '@'));

答案 3 :(得分:1)

另一种方法是

$emailSuffix = substr(strstr($email_address, '@'), 1);

可悲的是,strstrstrrchr没有“排除针”设置,因此子字符串是必需的。

答案 4 :(得分:0)