PHP搜索字符串以查找电子邮件地址

joo*_*aal 5 php regex

嗨我试图搜索字符串,看它是否包含一个电子邮件地址 - 然后返回它.

典型的电子邮件vaildator表达式是:

eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email);
Run Code Online (Sandbox Code Playgroud)

但是,我如何搜索是否在字符串中,例如返回字符串中的电子邮件地址:

"我的名字是乔,我可以通过joe@mysite.com与我联系.我也在Twitter上."

我有点难过,我知道我可以搜索它是否存在于它周围的\ b但是如何返回找到的内容.

谢谢.

Sam*_*son 9

您可以使用preg_match(),将其输出到数组以供使用.

$content = "Hi my name is Joe, I can be contacted at joe@mysite.com. I am also on Twitter.";
preg_match("/[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})/i", $content, $matches);

print $matches[0]; // joe@mysite.com
Run Code Online (Sandbox Code Playgroud)

  • 我将模式更改为"/ [_ az0-9-] +(?:\.[_ az0-9-] +)*@ [az0-9-] +(?:\. z0-9 - ] +)*(?:\.[az] {2,3})/ i"`以便只获得电子邮件匹配.没有`?:`在组的开头regexp也返回该组匹配数组. (2认同)

Ant*_*ins 4

添加 $regs 作为最后一个参数:

eregi("...", $email, $regs);
Run Code Online (Sandbox Code Playgroud)