Как определить почтовые адреса конкретного домена с помощью регулярных выражений? - PullRequest
0 голосов
/ 22 ноября 2011

Я хочу обернуть некоторые элементы html для адреса gmail в заданную строку.Как я могу сделать это с помощью PHP регулярных выражений.

Вход

$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 ]

2 голосов
/ 22 ноября 2011

Вы можете взять практически любое регулярное выражение поиска электронной почты и просто заменить часть домена фиксированной строкой Тогда поиск и замена не требуют особых усилий:

 = preg_replace('/\b\w[\w+.%!-]+@gmail.com\b/', "<div class=gmail>$0</div>", $src);
                      # ^^^ allowed special chars still insufficient
2 голосов
/ 22 ноября 2011

Попробуйте что-то вроде (оборачивает все адреса электронной почты):

$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);

Только Gmail:

$string = 'Sample text name@gmail.com another text name2@gmail.com,name2@yahoo.com';
echo preg_replace("/([\._a-zA-Z0-9-]+@gmail.com)+/i", "<div class='gmail'>$1</div>", $string);
1 голос
/ 22 ноября 2011
preg_replace('(\w+?@\w+?\.\w+)', '<div class="gmail">$0</div>', 'Sample text name@gmail.com another text name2@gmail.com,name2@yahoo.com');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...