Удалить неверный формат электронной почты в PHP - PullRequest
2 голосов
/ 21 апреля 2011
Array (
    [0] => myemail@domain.com
    [1] => mysecondemail@domain.com
    [2] => invalidEmail.com
)

Обратите внимание, что третье значение массива является недопустимым форматом электронной почты.Как мне удалить его с помощью / создания функции?Мне нужно действительное письмо на implode("," the valid email) перед отправкой письма с использованием функции mail().

Ответы [ 3 ]

9 голосов
/ 21 апреля 2011
$valid = array_filter($emails, create_function('$s', 'return filter_var($s, FILTER_VALIDATE_EMAIL);'));

Или для PHP 5.3 +:

$valid = array_filter($emails, function ($s) { return filter_var($s, FILTER_VALIDATE_EMAIL); });
2 голосов
/ 21 апреля 2011
<?php
$len=count($array);
for ($i=0;$i<$len;$i++)
  if (preg_match('^[a-z0-9!#$%&*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+(?:[a-z]{2,4}|museum|travel)$/i',$array[$i]))
      echo $array[$i];
?>
1 голос
/ 21 апреля 2011

Базовое решение простое и не требует регулярных выражений

  $isvalid = filter_var('myname@anydomain.com', FILTER_VALIDATE_EMAIL));

Но ...

Однострочного решения просто не существует (с использованием регулярных выражений или чего-то еще).

Чтобы узнать больше о действующих адресах электронной почты, воспользуйтесь ссылками ниже.

Ссылка:

Вот несколько примеров:

  • 甲 斐 @ 黒 川. * 1063 日本 *
  • Rδοκιμή @ παράδειγμα
  • Pelé@example.com
  • JSmith @ [192.168.2.1]
  • а \ @ хуг @ domain.com

Эти адреса не соответствуют стандарту RFC 5322 , но они все еще действительны.

Даже если вы подтвердите правильность некоторых адресов, ничто не может гарантировать, что ваш почтовый сервер их примет.

...