# 標準のバリデーションクラス群

Zend Framework には、すぐに使える標準のバリデーションクラス群が同梱されています。

## Alnum

`$value` がアルファベットおよび数字のみで構成されているときにのみ `TRUE` を返します。 このバリデータでは、オプションとして空白文字を認めることもできます。

アルファベットとは各言語で単語を構成する文字を意味します。 ただし、以下の言語では英語のアルファベットをアルファベットとして扱います：中国語、日本語、韓国語。 言語は`Zend_Locale`で指定されます。

## Alpha

`$value` がアルファベットのみで構成されているときにのみ `TRUE` を返します。 このバリデータでは、オプションとして空白文字を認めることもできます。

## Ccnum

`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 を使用して、 バリデータのインスタンスを作成する際に使用するロケールを変更することもできます。

## Iban

`$value` が正しい IBAN (International Bank Account Number) を含む場合にのみ `TRUE` を返します。 IBAN 番号の検証は、使用している国に対して行い、チェックサムを使用します。

IBAN 番号の検証方法は 2 通りあります。最初の方法では、国を表すロケールを指定します。 その国に対して、指定した IBAN 番号の検証を行います。

    $validator = new Zend_Validate_Iban('de_AT');
    $iban = 'AT611904300234573201';
    if ($validator->isValid($iban)) {
        // IBAN は有効なようです
    } else {
        // IBAN は無効です
        foreach ($validator->getMessages() as $message) {
            echo "$message\n";
        }
    }

これは、IBAN 番号をひとつの国に対して検証したい場合に使用します。 もっとシンプルな方法としては、この例のようにロケールを指定しないものもあります。

    $validator = new Zend_Validate_Iban();
    $iban = 'AT611904300234573201';
    if ($validator->isValid($iban)) {
        // IBAN は有効なようです
    } else {
        // IBAN は無効です
    }

しかしこれには大きな問題がひとつあります。 たとえばフランスならフランスなど 1 か国だけの IBAN 番号を許可したいときに、 他の国の IBAN 番号も有効となってしまいます。 したがって、特定の国の IBAN 番号を検証したい場合はロケールを指定しなければなりません。 国にこだわらずすべての IBAN 番号を許可したい場合は、 ロケールを省略してシンプルに書くことができます。

## Int

`$value` が整数値である場合にのみ `TRUE` を返します。 Zend Framework 1.8 以降では、このバリデータは ブラウザや環境変数あるいはアプリケーションで設定されたロケールを考慮するようになります。 もちろん、アクセサ get/setLocale を使用して、 バリデータのインスタンスを作成する際に使用するロケールを変更することもできます。

## Regex

`$value` が正規表現パターンにマッチする場合にのみ `TRUE` を返します。

## StringLength

文字列 `$value` の長さが最小値以上、 かつ最大値以下 (最大値が `NULL` 以外のとき) の場合にのみ `TRUE` を返します。 `setMin()` で最大値より大きい値を指定したり `setMax()` で最小値より小さい値を設定したりした場合に例外をスローします。 このクラスは UTF-8 のほかに iconv.internal_encoding にもとづいたその他の文字エンコーディングもサポートします。 別のエンコーディングを使用したい場合は、アクセサメソッド getEncoding および setEncoding で設定します。