Как проверить несколько адресов электронной почты в текстовом поле или текстовой области одновременно, используя php - PullRequest
0 голосов
/ 23 декабря 2011

Я использую это регулярное выражение для проверки одного письма.

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

Как проверить несколько адресов электронной почты в текстовом поле или текстовой области, разделив запятую (,) и точку с запятой (;) одновременно, используя PHP.

пример: abac @ gmail.com, abcd @ gmail.com; abcede @ gmail.com, acf @ in.com

Ответы [ 2 ]

4 голосов
/ 23 декабря 2011
$emails = preg_split('[,|;]',$_POST['emails']);
foreach($emails as $e){
    if(preg_match('/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/',trim($e)) == 0){
        echo($e ."is not a valid email address");
    }
}

Должен разбить ваши входящие письма на массив писем.Затем пройдусь по каждому письму и проверим регулярное выражение.Будет выводить, что электронное письмо является недействительным, поскольку оно находит их.Не стесняйтесь заменить эхо тем, что вы хотите, чтобы код делал, если электронная почта недействительна.Отредактировано: разделяет запятые и точки с запятой

Редактировать: Регулярное выражение было изменено.(Извините, я не проверил это перед публикацией.)

2 голосов
/ 23 декабря 2011

Хорошо, вот руководство по преобразованию вашего регулярного выражения в сопоставление списка чего-либо: проверка списка через запятую с помощью регулярного выражения

Простой подход - разделить строку изатем проверка каждой записи (либо неточна, так как запятые фактически разрешены в адресах):

 $list = str_getcsv($emails);   // or preg_split on commas
 foreach ($list as $mail) {
     if (!filter_var($mail, FILTER_VALIDATE_EMAIL)) {
         return false;
     }
 }

Или вы используете Используя регулярное выражение для проверки адреса электронной почты и обмена последнимистрока (?&address)/x для:

 ^\s* (?&address) (\s*,\s* (?&address) )* \s* $ /x
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...