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

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

## Alnum

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

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

## Alpha

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

## Barcode

このバリデータのインスタンスを作成する際には、検証したいバーコードの形式を指定します。 現在サポートしているバーコード形式は "`UPC-A`" (Universal Product Code) と "`EAN-13`" (European Article Number) です。 `isValid()` メソッドは、 指定した型のバーコードの検証アルゴリズムで入力が検証できた場合に true を返します。このバリデータに入力を渡す前に、 数字の 0 から 9 まで (0-9) 以外の文字はすべて取り除いておかなければなりません。

## Between

`$value` が最小値と最大値の間にある場合にのみ `TRUE` を返します。 デフォルトでは、両端の値も含めて比較します (`$value` が境界値と等しくてもかまいません) が、strict オプションを変更して、`$value` が最小値より大きくて最大値より小さい (最小値と最大値は含まない) とすることもできます。

## Ccnum

`$value` が Luhn アルゴリズム (10 で割ったあまりのチェックサム) を満たすクレジットカード番号である場合にのみ `TRUE` を返します。

## 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 番号の検証を行います。

    $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 番号を許可したい場合は、 ロケールを省略してシンプルに書くことができます。

## Identical

指定したトークンが `$value` と一致する場合にのみ `TRUE` を返します。このバリデータは任意の型を処理することができます。

検証したいトークンは初期化時にパラメータとして設定することもできますし、 `setToken()` メソッドで設定することもできます。

    // 初期化時のトークン設定
    $validator = new Zend_Validate_Identical(array('one' => 'two'));
    if ($validator->isValid(array('one' => 'two'))) { // 有効なトークンです
        // 何かをします
    }

    // setToken() によるトークン設定
    $validator->setToken(true);
    if ($validator->isValid(1)) { // 有効なトークンです
        // 何かをします
    }

## InArray

"needle" `$value` が "haystack" 配列に含まれる場合にのみ `TRUE` を返します。strict オプションを `TRUE` にすると、`$value` の型も確認します。

## Int

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

## Ip

`$value` が妥当な形式の IP アドレスである場合にのみ `TRUE` を返します。

## LessThan

`$value` が最大値よりも小さい場合にのみ `TRUE` を返します。

## NotEmpty

`$value` が空の値でない場合にのみ `TRUE` を返します。

## Regex

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

## StringLength

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