PHP搜索字符串的电子邮件地址
嗨我试图搜索一个字符串,看看它是否包含一个电子邮件地址 - 然后返回它。PHP搜索字符串的电子邮件地址
的典型电子邮件vaildator表达式为:
eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email);
但是我如何搜索,如果这是一个字符串,例如返回字符串中的电子邮件地址:
“嗨,我的名字是乔,我可以通过[email protected]联系我,我也在Twitter上。“
我有点难倒了,我知道,如果B为中心,但我怎么回什么是发现它的存在与\在所有我可以搜索。
谢谢。
您可以使用preg_match()
,它会将其输出到数组中供使用。
$content = "Hi my name is Joe, I can be contacted at [email protected] 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]; // [email protected]
请注意,在这种情况下,您需要从模式的开头和结尾中删除^和$ - ^表示匹配字符串的开头,$匹配字符串的结尾,所以它除非电子邮件是整个字符串,否则不会找到“匹配”。要搜索包含的电子邮件地址,您需要更改: “^ [_ a-z0-9 - ] +(\。[_ a-z0-9 - ] +)* @ [a-z0-9 - ] +( \。[a-z0-9 - ] +)*(\。[az] {2,3})$“to”[_a-z0-9 - ] +(\。[_ a-z0-9 - ] + )* @ [a-z0-9 - ] +(\。[a-z0-9 - ] +)*(\。[az] {2,3})“ – Nicole 2010-01-12 17:15:14
我决定继续使用eregi,谢谢指针Renesis。 – joobaal 2010-01-12 17:22:12
哦,谢谢您也帮助乔纳森! – joobaal 2010-01-12 17:22:46
更好PCRE用于提取ADDR_SPEC是:
/[a-z0-9\._%+!$&*=^|~#%'`?{}/\-][email protected]([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])?/
C.
顺便说一下,该表达式不正确。 – 2010-01-12 17:14:39
首先打在“电子邮件地址正则表达式”:http://www.regular-expressions.info/email.html – 2010-01-12 17:26:29
可能重复[在PHP中,我如何从一个文本块中提取多个电子邮件地址,并把他们到一个数组?](http://stackoverflow.com/questions/3901070/in-php-how-do-i-extract-multiple-e-mail-addresses-from-a-block-of-text-and -put) – 2014-08-04 12:00:30