在PHP中,我有一个如下的字符串:
$string = "user@domain.com";
如何仅从电子邮件地址中获取“user”?是否有简单的方法可以获取@之前的值?
@
edqdpe6u1#
假设电子邮件地址有效,则此文本方法应该有效:
$prefix = substr($email, 0, strrpos($email, '@'));
它会取得@最后一次出现之前的所有项目(但不包括@)。它会使用最后一次出现的项目,因为此电子邮件位址有效:
"foo\@bar"@iana.org
如果您还没有验证字符串,我建议您使用一个过滤函数:
if (($email = filter_var($email, FILTER_VALIDATE_EMAIL)) !== false) { // okay, should be valid now }
k3bvogb12#
请尝试以下操作:
$string = "user@domain.com"; $explode = explode("@",$string); array_pop($explode); $newstring = join('@', $explode); echo $newstring;
已针对多个'@'符号修改。
yduiuuwa3#
您可以使用
$user = implode('@', explode('@', $email, -1));
或
$user = substr($email, 0, strrpos($mail, '@'));
sc4hvdpw4#
在PHP手册中有一个很好的strpos()函数的例子:http://php.net/manual/en/function.strstr.php#117530PHP使这一点变得很容易。当处理电子邮件地址的域部分时,只需将strstr()的返回传递给substr(),并从1:substr(strstr($haystack, '@'), 1);
strpos()
substr(strstr($haystack, '@'), 1);
s8vozzvw5#
在最简单的形式中(假设只有一个“@”),您可以按照@Ben Fortune的答案(使用explode())。否则,请尝试以下操作:
$email1 = "foo@example.com"; $email2 = "b\@r@example.com"; 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
x0fgdtte6#
您可以用途:
strstr($email, '@', true);
6条答案
按热度按时间edqdpe6u1#
假设电子邮件地址有效,则此文本方法应该有效:
它会取得
@
最后一次出现之前的所有项目(但不包括@
)。它会使用最后一次出现的项目,因为此电子邮件位址有效:如果您还没有验证字符串,我建议您使用一个过滤函数:
k3bvogb12#
请尝试以下操作:
已针对多个'@'符号修改。
yduiuuwa3#
您可以使用
或
sc4hvdpw4#
在PHP手册中有一个很好的
strpos()
函数的例子:http://php.net/manual/en/function.strstr.php#117530PHP使这一点变得很容易。当处理电子邮件地址的域部分时,只需将strstr()的返回传递给substr(),并从1:
substr(strstr($haystack, '@'), 1);
s8vozzvw5#
在最简单的形式中(假设只有一个“@”),您可以按照@Ben Fortune的答案(使用explode())。
否则,请尝试以下操作:
x0fgdtte6#
您可以用途: