从php中的电子邮件地址获取用户名[关闭]

问题描述 投票:11回答:5

在PHP中,我有一个这样的字符串:

$string = "[email protected]";

我如何从电子邮件地址获取“用户”?有没有简单的方法来获得@之前的价值?

php string email
5个回答
17
投票

假设电子邮件地址有效,则此文本方法应该有效:

$prefix = substr($email, 0, strrpos($email, '@'));

它需要一切(但不包括)最后一次出现的@。它使用最后一次出现,因为此电子邮件地址有效:

"foo\@bar"@iana.org

如果你还没有验证字符串,我建议使用过滤函数:

if (($email = filter_var($email, FILTER_VALIDATE_EMAIL)) !== false) {
    // okay, should be valid now
}

5
投票

请尝试以下方法:

$string = "[email protected]";

$explode = explode("@",$string);

array_pop($explode);

$newstring = join('@', $explode);

echo $newstring;

修改为多个'@'符号。


2
投票

您可以使用

$user = implode('@', explode('@', $email, -1));

要么

$user = substr($email, 0, strrpos($mail, '@'));

2
投票

strpos()函数的PHP手册条目中有一个很好的例子:http://php.net/manual/en/function.strstr.php#117530

PHP让您轻松上手。使用电子邮件地址的域部分时,只需将strstr()的返回值传递给substr()并从1开始:

substr(strstr($haystack, '@'), 1);


0
投票

在最简单的形式(假设单个'@'),您可以关注@Ben Fortune的答案(使用explode())。

否则,试试这个:

$email1 = "[email protected]";
$email2 = "b\@[email protected]";

preg_match_all ("/^(.+)@[^@]+$/", $email1, $e1);
preg_match_all ("/^(.+)@[^@]+$/", $email2, $e2);

echo "Emails: {$e1[1][0]} and {$e2[1][0]}\n";
// Result: Emails: foo and b\@r
© www.soinside.com 2019 - 2024. All rights reserved.