如何使用zend_validator验证给定数据是否为字母数字

时间:2012-10-29 12:38:32

标签: php zend-framework

我有代码

$this->addValidator('Regex', false, 
                     array('/^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/'));

用于验证数据是否为字母数字但不起作用,

怎么做?

2 个答案:

答案 0 :(得分:6)

我正在使用标准的Alnum验证器。

在这样的表单定义中:

$this->addElement('text', 'username', array(
  'label' => 'Uživatelské jméno',
  'required' => true,
  'validators' => array(
      array('Alnum'),
      array('StringLength', false, array(2, 50))
  )
));

在你的符号中,类似下面的内容应该可以解决问题:

$this->addValidator('Alnum');

Zend Framework pages

上查看可能的参数/其他标准验证器

答案 1 :(得分:1)

你的正则表达式工作正常,验证器也是如此。只需确认您已在正确的位置使用它:

一个例子:

    $login = new Zend_Form_Element_Text('uesrlogin');
    $login->setLabel('Enter username :')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addValidator('Regex', false, array('/^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/'));

正如@Kamil指出的那样,使用Zend_Validate_Alnum验证器将是检查字母数字的最佳选择。它甚至为您的项目添加了多语言支持。

  

使用Zend_Validate_Alnum时,用户设置的语言   在他的浏览器中将用于设置允许的字符。这个   意味着当您的用户为德语设置de时,他也可以输入   像ä,ö和ü这样的人物角色除了   英文字母。