3

私はコードを持っています

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

データが英数字かどうかを検証するために使用されますが、機能していません。

どうやってするの?

4

2 に答える 2

7

この目的のために、標準の 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 のページで、可能な引数/その他の標準バリエータを参照してください。

于 2012-10-29T13:15:43.977 に答える
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 を設定すると、英語のアルファベットの文字に加えて、ä、ö、ü などの文字も入力できることを意味します。

于 2012-10-29T16:47:33.260 に答える