当前代码我用来获取电子邮件后缀
$emailarray = explode('@',$email_address);
$emailSuffix = $emailarray[1];
必须有一个更有效的功能。也许使用substr()
的东西?
答案 0 :(得分:9)
更短的:
$emailSuffix = end(explode('@', $email_address));
但我认为它不会比那更有效。正则表达式可能更慢。
我做了一些测试,虽然这个版本比使用
快3倍$a = explode('@', $email_address);
$foo = $a[1];
和
if (preg_match('~^.+@(.+)$~', $email_address, $reg))
$foo = $reg[1];
它不符合严格标准:
严格标准:只应通过引用传递变量
$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);
答案 4 :(得分:0)