【问题标题】:The Advantages of Email Validation with RegEx [duplicate]使用 RegEx 进行电子邮件验证的优势 [重复]
【发布时间】:2013-02-08 20:02:25
【问题描述】:

通常建议在 PHP 中使用 filter_var 函数来验证电子邮件地址 - 但是,开发人员有时会选择使用正则表达式的选项。例如,Codeigniter 的电子邮件助手依赖正则表达式来验证电子邮件地址。

选择正则表达式方法而不是依赖 filter_var 有什么优势?

提前谢谢你!

注意:这不是关于“如何在 PHP 中验证电子邮件”的实际问题,而是关于 PHP 最佳实践的理论问题。请仔细阅读以了解问题的性质,然后再将其标记为不重复的内容的副本。谢谢!

【问题讨论】:

  • 肯定像stackoverflow.com/questions/5855811/… 这样的答案已经涵盖了这个?
  • 它可能是尚未从 CI 的早期版本更新的遗留代码。 filter_var() 直到 5.2.0 才可用,这在版本控制方面是不久之前的。
  • @mikebabcock – 呃......不完全是:该答案中没有任何内容可以直接解决我正在询问的问题。不过,非常感谢您提供该链接,这是非常有价值的信息。
  • @cryptic ツ - 谢谢,这可能确实是他们使用它的原因。

标签: php regex codeigniter email-validation


【解决方案1】:

FILTER_VALIDATE_EMAIL 将根据标准验证电子邮件地址。 就像你会验证

'0test\'mail_check@testing.com'

使用 filter_var 你会得到正确的输出。但实际上这不是一封有效的电子邮件,您可以使用正则表达式对其进行跟踪。

正则表达式为您提供了很大的控制权,但同时正则表达式很复杂,filter_var 更简洁。

所以你可以决定使用什么。 :)

【讨论】:

  • – 非常感谢,我想这就是我需要听到的。
  • 很好的答案,尽管可以通过显示解决您发现的问题的示例 RegEx 来改进它。
  • @AaronBrager - 好主意,但我不确定 Abhishek 是否仍然在线以扩展他的答案。如果可以的话,请问您可以举出这样的例子吗?
  • 您可以使用codeigniter电子邮件验证codefunction valid_email($str) { return ( !preg_match("/^([a-z0-9\+_\-]+)(\. [a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[az]{2,6}$/ix", $str)) ?错误:正确; }
猜你喜欢
  • 2013-08-06
  • 2012-11-24
  • 1970-01-01
  • 2016-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-16
  • 2017-06-29
相关资源
最近更新 更多