删除PHP中的无效电子邮件格式

时间:2011-04-21 02:51:46

标签: php arrays validation function email-validation

Array (
    [0] => myemail@domain.com
    [1] => mysecondemail@domain.com
    [2] => invalidEmail.com
)

请注意,第三个数组值是无效的电子邮件格式。如何使用/创建功能将其删除?在使用implode("," the valid email)功能发送电子邮件之前,我需要有效的电子邮件mail()

3 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:2)

<?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];
?>

答案 2 :(得分:1)

基本解决方案很简单,不需要正则表达式

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

但是...

一线解决方案不存在(使用正则表达式或其他方式)。

要了解有关有效电子邮件地址的详情,请参阅以下参考资料。

<强>参考文献:

一些有效的例子是:

  • 甲斐@黒川。日本
  • Rδοκιμή@παράδειγμα
  • Pelé@example.com
  • jsmith的@ [192.168.2.1]
  • ABC \ @ XYZ @ domain.com

这些地址不符合RFC 5322标准,但它们仍然有效。

即使您将某些地址验证为正确,也无法保证您的电子邮件服务器会接受它们。