gpt4 book ai didi

php - 使用正则表达式从电子邮件地址中提取用户名

转载 作者:IT王子 更新时间:2023-10-29 01:14:28 26 4
gpt4 key购买 nike

我的文本字符串如下所示:

johndoe@domain.com (John Doe)

我只需要获取 @ 之前的部分,除此之外别无其他。如果重要的话,文本来自一个简单的 XML 对象。

我的代码是这样的:

$authorpre = $key->{"author"};
$re1 = '((?:[a-z][a-z]+))';

if ($c = preg_match_all ("/".$re1."/is", $authorpre, $matches))
{
$author = $matches[1][0];
}

有时用户名可能在 @ 符号之前有数字或下划线,这似乎是正则表达式停止的地方。

最佳答案

将匹配并捕获任何字符直到到达 @ 字符的正则表达式:

([^@]+)

这似乎正是您所需要的。它将处理电子邮件地址的各种异常变化。


我不确定为什么 Ben James删除了他的答案,因为我觉得它比我的好。我要把它贴在这里(除非他取消删除他的回答):

Why use regex instead of string functions?

$parts = explode("@", "johndoe@domain.com");
$username = $parts[0];

在这种情况下您根本不需要正则表达式。我个人认为使用 explode 是一个更好的选择。


作为Johannes Rössel在评论中指出,电子邮件地址解析相当复杂。如果你想 100% 确定你将能够处理任何技术上有效的电子邮件地址,你将不得不编写一个例程来正确处理引用,因为我的答案中列出的两种解决方案都会窒息像 "a@b"@example.com 这样的地址。可能有一个库可以为您处理这种解析,但我不知道。

关于php - 使用正则表达式从电子邮件地址中提取用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1798368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com