您好我正在尝试搜索字符串以查看它是否包含电子邮件地址 - 然后将其返回。
典型的电子邮件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周围存在但是如何返回找到的内容。
感谢。
答案 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])?/
下进行。