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

时间:2010-01-12 17:08:17

标签: php regex

您好我正在尝试搜索字符串以查看它是否包含电子邮件地址 - 然后将其返回。

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

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

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

“我的名字是Joe,我可以通过joe@mysite.com与我联系。我也在Twitter上。”

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

感谢。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:4)

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

eregi("...", $email, $regs);

答案 2 :(得分:0)

用于提取ADDR_SPEC的更好的PCRE是:

 /[a-z0-9\._%+!$&*=^|~#%'`?{}/\-]+@([a-z0-9\-]+\.){1,}([a-z]{2,6})/

但如果您真的想要提取RFC 2822,那么您需要以下内容:

 /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/

下进行。