【问题标题】:Symfony email validation (not using Form Framework)Symfony 电子邮件验证(不使用表单框架)
【发布时间】:2011-02-14 08:45:20
【问题描述】:

正如标题所示,我正在寻找一种使用 Symfony 框架(无需使用表单框架)来验证电子邮件(或其他字符串格式)的方法。

我进行了一些搜索,但给出的每个示例都使用 Form 类...

而且我知道我可以使用外部类或库,但我只是好奇是否可以从 Symfony 中使用一些可以工作的东西。

这样的东西是理想的:

$email = "email@to.validate";

$validator = new sfEmailValidator(); // just using this as an example - I know it doesn't work :p

$validator->check($email); // returns true or false if it validates

【问题讨论】:

    标签: php validation symfony1 symfony-1.4


    【解决方案1】:

    您应该能够执行以下操作——您无需使用表单框架即可使用验证器框架:

    $email = 'email@to.validate';
    $v = new sfValidatorEmail();
    
    try {
        $email = $v->clean($email);
    } catch (sfValidatorError $e) {
        // email invalid
    }
    

    【讨论】:

    • 啊,是的,我记得读到过。我想我只是想避免使用异常处理来进行电子邮件验证。所以我想这是通过 Symfony 做到这一点的唯一方法......
    • @xil3 异常处理这么有问题吗?!另一种选择是获取sfValidatorEmail 使用的正则表达式并使用preg_match 进行检查:/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i
    • 问题不大,但是如果我要进行很多不同类型的验证,我是否能够将它们全部粘贴在 Try 子句中,并能够区分哪些是错误的从sfValidatorError 对象返回?
    • 补充一下我上次的推荐——例如,如果我使用的是sfValidatorDatesfValidatorEmail。如果它们都放在try 子句中,是否可以区分它们,或者我是否需要每个try catch 语句。
    • @xil3 嗯,异常有一个getValidator 方法,可以让你获取失败的验证器实例。这可能对你有用。
    【解决方案2】:

    我会重新考虑使用 sfValidatorEmail,它不太​​准确。请改用 filter_var(如果需要,您可以根据 filter_var 创建自己的验证器)。

    【讨论】:

      猜你喜欢
      • 2015-10-25
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      • 2013-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多