【问题标题】:Validate an array of values, output an error and stop script if one value fails?验证一组值,如果一个值失败则输出错误并停止脚本?
【发布时间】:2015-09-10 22:27:47
【问题描述】:

我有一系列电子邮件。我想对每一个做一些验证,看看它是否或多或少是正确的格式。此脚本正在验证网站管理方面的电子邮件。管理方面的这一特定部分用于向特定组发送时事通讯,每个组都包含一系列电子邮件。

我正在添加添加具有管理员指定收件人的组的功能。如果管理员要删除一组特定的时事通讯收件人并希望在销毁原始组之前将其添加到另一个组,这将非常有用。

如果数组中的任何项目与验证不匹配,我想出了一种方法来引发错误,但是,似乎应该有更好的方法在 PHP 中执行此操作。我一直无法找到替代方法。

   $email_array_data["count"] = count($email_array);
foreach($email_array as $email) { 
  if (email_validation_function($email) {
    $email_array_data["passed_validation"]++;
  } else {
    $email_array_data["failed_validation"][] = $email;
  }
}
if ($email_array_data["count"] == $email_array_data["passed_validation"]) {
  Send The Emails
} else {
  Echo The Emails That Failed Validation
}

此脚本运行良好,但似乎有更好的方法来执行此操作,即检查每封电子邮件是否满足要求,然后比较通过/失败验证的电子邮件数量和电子邮件数组的计数。

有没有更好的方法?

【问题讨论】:

  • 几种不同的方法,但没有什么“更好”

标签: php arrays validation email loops


【解决方案1】:

首先,您应该查看filter_var()。这是验证大量数据(尤其是电子邮件)的绝佳功能(请参阅here)。

有很多方法可以处理错误。根据我从您的脚本中看到的内容,您仅在所有电子邮件都有效时才认为该数组有效。你可以抛出异常。

$is_valid = filter_var($email, FILTER_VALIDATE_EMAIL);

if( ! $email )
    throw new Exception('Invalid email address supplied');

如果您采用这种方法,您可以使用 try {} catch {} 捕获异常,我猜这只是另一种方法。

【讨论】:

  • 我不知道内置函数。我一定会用的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
  • 1970-01-01
  • 2021-08-27
相关资源
最近更新 更多