標準のバリデーションクラス群 Zend Framework には、すぐに使える標準のバリデーションクラス群が同梱されています。 Alnum $value がアルファベットおよび数字のみで構成されているときにのみ TRUE を返します。 このバリデータでは、オプションとして空白文字を認めることもできます。 アルファベットとは各言語で単語を構成する文字を意味します。 ただし、以下の言語では英語のアルファベットをアルファベットとして扱います:中国語、日本語、韓国語。 言語はZend_Localeで指定されます。 Alpha $value がアルファベットのみで構成されているときにのみ TRUE を返します。 このバリデータでは、オプションとして空白文字を認めることもできます。 Between $value が最小値と最大値の間にある場合にのみ TRUE を返します。 デフォルトでは、両端の値も含めて比較します ($value が境界値と等しくてもかまいません) が、strict オプションを変更して、$value が最小値より大きくて最大値より小さい (最小値と最大値は含まない) とすることもできます。 Ccnum $value が Luhn アルゴリズム (10 で割ったあまりのチェックサム) を満たすクレジットカード番号である場合にのみ TRUE を返します。 Ccnum バリデータは、 CreditCard バリデータのほうを選んで非推奨になりました。 セキュリティ上の理由で、 Ccnum の代わりに CreditCard を使わなければなりません。 Date $value が 'YYYY-MM-DD' 形式の日付である場合にのみ TRUE を返します。オプションの locale を設定すると、そのロケールに応じた検証を行います。 オプションの format を設定すると、 そのフォーマットを使用して検証を行います。オプションパラメータの詳細は Zend_Date::isDate() を参照ください。 Digits $value が数字のみで構成されている場合にのみ TRUE を返します。 Float $value が浮動小数点値である場合にのみ TRUE を返します。 Zend Framework 1.8 以降では、このバリデータは ブラウザや環境変数あるいはアプリケーションで設定されたロケールを考慮するようになります。 もちろん、アクセサ get/setLocale を使用して、 バリデータのインスタンスを作成する際に使用するロケールを変更することもできます。 GreaterThan $value が最小値よりも大きい場合にのみ TRUE を返します。 Hex $value が16進文字のみで構成されている場合にのみ TRUE を返します。 Iban $value が正しい IBAN (International Bank Account Number) を含む場合にのみ TRUE を返します。 IBAN 番号の検証は、使用している国に対して行い、チェックサムを使用します。 IBAN 番号の検証方法は 2 通りあります。最初の方法では、国を表すロケールを指定します。 その国に対して、指定した IBAN 番号の検証を行います。 isValid($iban)) { // IBAN は有効なようです } else { // IBAN は無効です foreach ($validator->getMessages() as $message) { echo "$message\n"; } } ]]> これは、IBAN 番号をひとつの国に対して検証したい場合に使用します。 もっとシンプルな方法としては、この例のようにロケールを指定しないものもあります。 isValid($iban)) { // IBAN は有効なようです } else { // IBAN は無効です } ]]> しかしこれには大きな問題がひとつあります。 たとえばフランスならフランスなど 1 か国だけの IBAN 番号を許可したいときに、 他の国の IBAN 番号も有効となってしまいます。 したがって、特定の国の IBAN 番号を検証したい場合はロケールを指定しなければなりません。 国にこだわらずすべての IBAN 番号を許可したい場合は、 ロケールを省略してシンプルに書くことができます。 Int $value が整数値である場合にのみ TRUE を返します。 Zend Framework 1.8 以降では、このバリデータは ブラウザや環境変数あるいはアプリケーションで設定されたロケールを考慮するようになります。 もちろん、アクセサ get/setLocale を使用して、 バリデータのインスタンスを作成する際に使用するロケールを変更することもできます。 LessThan $value が最大値よりも小さい場合にのみ TRUE を返します。 Regex $value が正規表現パターンにマッチする場合にのみ TRUE を返します。 StringLength 文字列 $value の長さが最小値以上、 かつ最大値以下 (最大値が NULL 以外のとき) の場合にのみ TRUE を返します。 setMin() で最大値より大きい値を指定したり setMax() で最小値より小さい値を設定したりした場合に例外をスローします。 このクラスは UTF-8 のほかに iconv.internal_encoding にもとづいたその他の文字エンコーディングもサポートします。 別のエンコーディングを使用したい場合は、アクセサメソッド getEncoding および setEncoding で設定します。