如何使用正则表达式识别特定域的邮件地址?

时间:2011-11-22 07:36:00

标签: php regex string

我想在给定字符串中为gmail地址包装一些html元素。我怎么能用php regex做到这一点。

输入

$string = 'Sample text name@gmail.com another text name2@gmail.com,name2@yahoo.com';

我想要的输出

$string = "Sample text <div class='gmail'>name@gmail.com</div> another text <div class='gmail'>name2@gmail.com</div>,name2@yahoo.com";

3 个答案:

答案 0 :(得分:2)

尝试类似(包装所有电子邮件地址):仅限Gmail:

$string = 'Sample text name@gmail.com another text name2@gmail.com,name2@yahoo.com';
echo preg_replace("/([\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-])+/i", "<div class='gmail'>$1</div>", $string);

答案 1 :(得分:2)

您几乎可以使用任何email search regex,只需用固定字符串替换域部分即可。然后搜索和替换不是很多努力:

 = preg_replace('/\b\w[\w+.%!-]+@gmail.com\b/', "<div class=gmail>$0</div>", $src);
                      # ^^^ allowed special chars still insufficient

答案 2 :(得分:1)

preg_replace('(\w+?@\w+?\.\w+)', '<div class="gmail">$0</div>', 'Sample text name@gmail.com another text name2@gmail.com,name2@yahoo.com');