標準のバリデーションクラス群Zend Framework には、すぐに使える標準のバリデーションクラス群が同梱されています。 Alnum(一部日本語)Zend_Validate_Alnum により、 与えられた文字列がアルファベットおよび数字だけを含むかどうか検証できます。 検証したい入力に対する長さの制限はありません。 (訳注:ここでいうアルファベットおよび数字、とは各言語で使われる文字および数字の集合を意味します。英数字ではありません) Zend_Validate_Alnum でサポートされるオプション下記のオプションが Zend_Validate_Alnum でサポートされます。
基本的な使用法下記は基本的な使用例です。
空白を使用Per default whitespaces are not accepted because they are not part of the alphabet. Still, there is a way to accept them as input. This allows to validate complete sentences or phrases. To allow the usage of whitespaces you need to give the allowWhiteSpace option. This can be done while creating an instance of the validator, or afterwards by using setAllowWhiteSpace(). To get the actual state you can use getAllowWhiteSpace().
別の言語を使用When using Zend_Validate_Alnum then the language which the user sets within his browser will be used to set the allowed characters. This means when your user sets de for german then he can also enter characters like ä, ö and ü additionally to the characters from the english alphabet. Which characters are allowed depends completly on the used language as every language defines it's own set of characters. 実際には、それらの固有の文書で受け付けられない3つの言語があります。 それらの言語は、Korean、日本語、 中国語です。 because this languages are using an alphabet where a single character is build by using multiple characters. これらの言語を使用する場合、入力は英語のアルファベットを使用した検証のみ行なわれます。 Alpha(一部日本語)Zend_Validate_Alpha により、 与えられた文字列がアルファベットだけを含むかどうか検証できます。 検証したい入力に対する長さの制限はありません。 このバリデータは数字を受け付けませんが、 Zend_Validate_Alnum と関係があります。 (訳注:ここでいうアルファベット、とはアラビア文字やタイ文字、キリール文字など、各言語で使われる文字の集合を意味します。英字とは限りません) Zend_Validate_Alpha でサポートされるオプション下記のオプションが Zend_Validate_Alpha でサポートされます。
基本的な使用法下記は基本的な使用例です。
空白を使用Per default whitespaces are not accepted because they are not part of the alphabet. Still, there is a way to accept them as input. This allows to validate complete sentences or phrases. To allow the usage of whitespaces you need to give the allowWhiteSpace option. This can be done while creating an instance of the validator, or afterwards by using setAllowWhiteSpace(). To get the actual state you can use getAllowWhiteSpace().
別の言語を使用When using Zend_Validate_Alpha then the language which the user sets within his browser will be used to set the allowed characters. This means when your user sets de for german then he can also enter characters like ä, ö and ü additionally to the characters from the english alphabet. Which characters are allowed depends completly on the used language as every language defines it's own set of characters. 実際には、それらの固有の文書で受け付けられない3つの言語があります。 それらの言語は、Korean、日本語、 中国語です。 because this languages are using an alphabet where a single character is build by using multiple characters. これらの言語を使用する場合、入力は英語のアルファベットを使用した検証のみ行なわれます。 BarcodeZend_Validate_Barcode allows you to check if a given value can be represented as barcode. Zend_Validate_Barcode supports multiple barcode standards and can be extended with proprietary barcode implementations very easily. The following barcode standards are supported:
Supported options for Zend_Validate_BarcodeThe following options are supported for Zend_Validate_Barcode:
Basic usageTo validate if a given string is a barcode you just need to know its type. See the following example for an EAN13 barcode:
Optional checksumSome barcodes can be provided with an optional checksum. These barcodes would be valid even without checksum. Still, when you provide a checksum, then you should also validate it. By default, these barcode types perform no checksum validation. By using the checksum option you can define if the checksum will be validated or ignored.
Writing custom adaptersYou may write custom barcode validators for usage with Zend_Validate_Barcode; this is often necessary when dealing with proprietary barcode types. To write your own barcode validator, you need the following information.
Your custom barcode validator must extend Zend_Validate_Barcode_AdapterAbstract or implement Zend_Validate_Barcode_AdapterInterface. As an example, let's create a validator that expects an even number of characters that include all digits and the letters 'ABCDE', and which requires a checksum.
BetweenZend_Validate_Between allows you to validate if a given value is between two other values.
Supported options for Zend_Validate_BetweenThe following options are supported for Zend_Validate_Between:
Default behaviour for Zend_Validate_BetweenPer default this validator checks if a value is between min and max where both border values are allowed as value.
In the above example the result is TRUE due to the reason that per default the search is inclusively the border values. This means in our case that any value from '0' to '10' is allowed. And values like '-1' and '11' will return FALSE. Validation exclusive the border valuesSometimes it is useful to validate a value by excluding the border values. See the following example:
The example is almost equal to our first example but we excluded the border value. Now the values '0' and '10' are no longer allowed and will return FALSE. コールバックZend_Validate_Callback は 与えられた値に対してバリデートを行うコールバックを供給することができます。 Zend_Validate_Callback にてサポートされるオプション次のオプションは Zend_Validate_Callback にてサポートされます:
基本的な使用法もっとも単純なユースケースは単なる関数を持ち、コールバックとして使用します。 次の関数を持ったつもりになりましょう。
Zend_Validate_Callback内で使用するにはちょうどこの通り 呼び出さなければなりません:
クロージャとの使用方法PHP 5.3 は基本的には、内包あるいは 匿名 関数の » 無名関数を導入しています。 PHP にて Zend_Validate_Callback とともに 使用される別の形式の次のようなクロージャを考えましょう。 例として:
クラスに基づくコールバックの使用方法もちろんクラスメソッドをコールバックとして使用することは可能です。 次のクラスメソッド を持ったつもりになりましょう:
コールバックの定義はこのケースとほぼ同様です。メソッドより前にクラスインスタンス化して おいて、コールバックを取得する配列を生成します:
スタティックメソッドをコールバックとして定義することが可能です。 次のクラス定義を 考慮し、バリデータの使用方法は:
最終的に、あなたが PHP 5.3を使用しているならば、あなたのクラスにおいて __invoke() マジックメソッドを定義できます。 もしそうしたならば、 コールバックとして機能するクラスをインスタンス化したものを単に用意します。
オプションの追加Zend_Validate_Callback は コールバックへ追加引数として提供されるオプションの使用を許容します。 次のクラスとメソッド定義を考えてみましょう:
バリデータに追加引数として通知する2つの方法があります: 追加引数をコンストラクタに渡すか setOptions() メソッドへ渡します。 コンストラクタに渡すには、"callback" と "options" を二つのキーにもつ配列を 渡す必要があります:
一方で、インスタンス化した後のバリデータへ渡せます:
追加引数が isValid() へ渡されたとき、これらの 値は $value のすぐあとに追加されるでしょう。
コールバックを呼び出す際には、 isValid() に渡される他の値全てを後ろに従えたコールバックに バリデートされる値が第一引数として常に渡されます。 他のオプションは全てその後に続きます。使用できるオプションの量と型は無制限です。 CreditCardZend_Validate_CreditCard allows you to validate if a given value could be a credit card number. A creditcard contains several items of metadata, including a hologram, account number, logo, expiration date, security code and the card holder name. The algorithms for verifying the combination of metadata are only known to the issuing company, and should be verified with them for purposes of payment. However, it's often useful to know whether or not a given number actually falls within the ranges of possible numbers prior to performing such verification, and, as such, Zend_Validate_CreditCard simply verifies that the credit card number provided is well-formed. For those cases where you have a service that can perform comprehensive verification, Zend_Validate_CreditCard also provides the ability to attach a service callback to trigger once the credit card number has been deemed valid; this callback will then be triggered, and its return value will determine overall validity. The following issuing institutes are accepted:
Supported options for Zend_Validate_CreditCardThe following options are supported for Zend_Validate_CreditCard:
Basic usageThere are several credit card institutes which can be validated by Zend_Validate_CreditCard. Per default, all known institutes will be accepted. See the folowing example:
The above example would validate against all known credit card institutes. Accepting defined credit cardsSometimes it is necessary to accept only defined credit card institutes instead of all; e.g., when you have a webshop which accepts only Visa and American Express cards. Zend_Validate_CreditCard allows you to do exactly this by limiting it to exactly these institutes. To use a limitation you can either provide specific institutes at initiation, or afterwards by using setType(). Each can take several arguments. You can provide a single institute: When you want to allow multiple institutes, then you can provide them as array: And as with all validators, you can also pass an associative array of options or an instance of Zend_Config. In this case you have to provide the institutes with the type array key as simulated here:
You can also set or add institutes afterward instantiation by using the methods setType(), addType() and getType().
Validation by using foreign APIsAs said before Zend_Validate_CreditCard will only validate the credit card number. Fortunately, some institutes provide online APIs which can validate a credit card number by using algorithms which are not available to the public. Most of these services are paid services. Therefore, this check is deactivated per default. When you have access to such an API, then you can use it as an addon for Zend_Validate_CreditCard and increase the security of the validation. To do so, you simply need to give a callback which will be called when the generic validation has passed. This prevents the API from being called for invalid numbers, which increases the performance of the application. setService() sets a new service, and getService() returns the set service. As a configuration option, you can give the array key 'service' at initiation. For details about possible options take a look into Callback.
As you can see the callback method will be called with the creditcard number as the first parameter, and the accepted types as the second parameter. Ccnum
DateZend_Validate_Date allows you to validate if a given value contains a date. This validator validates also localized input. Supported options for Zend_Validate_DateThe following options are supported for Zend_Validate_Date:
Default date validationThe easiest way to validate a date is by using the default date format. It is used when no locale and no format has been given.
The default date format for Zend_Validate_Date is 'yyyy-MM-dd'. Localized date validationZend_Validate_Date validates also dates which are given in a localized format. By using the locale option you can define the locale which the date format should use for validation.
The locale option sets the default date format. In the above example this is 'dd.MM.yyyy' which is defined as default date format for 'de'. Self defined date validationZend_Validate_Date supports also self defined date formats. When you want to validate such a date you can use the format option.
Of course you can combine format and locale. In this case you can also use localized month or daynames.
Db_RecordExists および Db_NoRecordExistsZend_Validate_Db_RecordExists および Zend_Validate_Db_NoRecordExists は、 データベースのテーブル上に 指定した値のレコードが存在するかどうかを調べる手段を提供します。 Zend_Validate_Db_* でサポートされるオプションZend_Validate_Db_NoRecordExists および Zend_Validate_Db_RecordExists では下記のオプションがサポートされます。
基本的な使用法このバリデータの基本的な使用例です。
上の例は、指定したメールアドレスがデータベースのテーブル内に存在するかどうかを調べます。 指定したカラムの値が $emailaddress に一致するレコードがなければ、 エラーメッセージが表示されます。
上の例は、指定したユーザ名がデータベースのテーブル上に存在しないことを確認します。 指定したカラムの値が $username に一致するレコードが見つかれば、 エラーメッセージが表示されます。 レコードの除外Zend_Validate_Db_RecordExists および Zend_Validate_Db_NoRecordExists には、 テーブルの一部を除外してその内容を調べる方法があります。 where 句を文字列で指定するか、あるいはキー "field" および "value" を含む配列を指定します。 除外条件を配列で指定すると、!= 演算子を使用します。 つまり、テーブル内の残りのレコードの内容を確認してからレコードを変更できるのです (たとえばユーザ情報のフォームなどで使用します)。
上の例は、id = $user_id であるレコードを除いてそのテーブル内に $username を含むレコードが存在しないことを調べます。 除外条件を文字列で指定することもできるので、 != 以外の演算子を指定することもできます。 これは、複合キーに対するチェックの際に便利です。
上の例では、ユーザ名 $username と email $email の両方を持つレコードだけが正しいことを確認するために、'users' テーブルを調べます。 データベースアダプタアダプタを指定することもできます。 複数のデータベースアダプタを使用している場合や デフォルトのアダプタを設定していない場合などにこれを使用します。 以下に例を示します。
データベーススキーマデータベース内のスキーマを PostgreSQL や DB/2 のアダプタで指定するには、キー table および schema を持つ配列を次の例のように渡します。 below:
数字Zend_Validate_Digits は、与えられた値が数字だけを含むかどうか検証します。 Zend_Validate_Digits でサポートされるオプションZend_Validate_Digits に対する追加オプションはありません。 数字を検証任意の値が数字だけを含み、他の文字を含まないかどうか検証するには、 この例で示すようにバリデータを単純に呼び出します。
メールアドレスZend_Validate_EmailAddress は、メールアドレスの検証を行います。 このバリデータは、まずメールアドレスを local-part @ hostname に分割し、メールアドレスやホスト名の仕様にあわせて検証します。 基本的な使用法基本的な使用法は、以下のようになります。
これは、メールアドレス $email を検証し、失敗した場合は その原因を表す便利なエラーメッセージを getMessages() で取得します。 メールアドレス検証のオプションZend_Validate_EmailAddressは、 開始時に関係するオプションを持つ配列を与えることによって、 または後で setOptions() を使って セットできるいくつかのオプションをサポートします。 下記のオプションがサポートされます。
複雑なローカルパートZend_Validate_EmailAddress は、メールアドレスの検証を RFC2822 にもとづいて行います。たとえば、妥当な形式のメールアドレスとしては bob@domain.com、bob+jones@domain.us、 "bob@jones"@domain.com および "bob jones"@domain.com などがあります。 かつて使われていたものの、現在は有効とはみなされないフォーマットもあります (たとえば、メールアドレスに改行文字や "\" を使用するなど)。 ローカルパートのみの検証もしメールアドレスのローカルパートのみをチェックするために Zend_Validate_EmailAddress を必要として、 ホスト名の検証を無効にしたいなら、 domain オプションに FALSE を設定できます。 これにより、 Zend_Validate_EmailAddress が メールアドレスのホスト名部分を検証しないようにします。
さまざまな形式のホスト名の検証メールアドレスのホスト名部分の検証は、 Zend_Validate_Hostname で行います。デフォルトでは、domain.com 形式の DNS ホスト名のみが有効となります。しかし、 IP アドレスやローカルホスト名も有効にしたいこともあるでしょう。 その場合は、Zend_Validate_EmailAddress のインスタンスを作成する際にパラメータを渡さなければなりません。 このパラメータで、認めたいホスト名の形式を指定します。 詳細は Zend_Validate_Hostname を参照ください。 たとえば DNS ホスト名およびローカルホスト名のどちらも許可するには、次のようにします。
そのホスト名が実際にメールを受け付けるかどうかのチェックただ単にメールアドレスが正しい書式であるというだけでは、 そのアドレスが実際に存在するかどうかはわかりません。 この問題を解決するには、MX の検証を行います。 メールアドレスのホスト名に対応する DNS レコードに、MX (メール) のエントリが存在するかどうかを調べるのです。 これは、そのホストがメールを受け付けているかどうかを教えてはくれますが、 そのメールアドレス自体が正しいものであるかどうかを知ることはできません。 MX のチェックはデフォルトでは無効です。 MX のチェックを有効にするには、Zend_Validate_EmailAddress コンストラクタの 2 番目のパラメータを渡します。
あるいは、TRUE または FALSE を setValidateMx() に渡すことで、 MX の検証を有効あるいは無効にすることもできます。 この設定を有効にすると、ネットワーク関数を用いて メールアドレスのホスト名部に対する MX レコードの存在チェックをします。 これにより、スクリプトの処理速度が低下することに気をつけてください。 しばしば MX レコードの検証は、メールが受け付けられたとしても FALSE を返します。 この振る舞いの背後にある理由は、サーバが MX レコードを提供しなくてもサーバはメールを受付できることです。 この場合、サーバは A, A6 または AAAA レコードを提供します。 それらのほかのレコードでも Zend_Validate_EmailAddress がチェックできるようにするためには、 強度の MX 検証を設定する必要があります。 これは開始時に deep オプションを設定するか、 または setOptions() を使って行ないます。
Warning
パフォーマンスの警告MX チェックを有効にすると、使用されるネットワーク機能のせいで スクリプトが遅くなることに気づくでしょう。 強度のチェックを有効にすると与えられたサーバで追加の3種類を探すため、 さらにスクリプトが遅くなります。
国際化ドメイン名の検証Zend_Validate_EmailAddress は、ドメインの中に国際文字が使われている場合も処理できます。 このようなドメインは、国際化ドメイン名 (International Domain Name: IDN) と呼ばれています。これはデフォルトで有効になっていますが、無効にすることも可能です。 無効にするには、Zend_Validate_EmailAddress が内部で保持している Zend_Validate_Hostname オブジェクトの設定を変更します。 setValidateIdn() の詳細な使用法は、 Zend_Validate_Hostname のドキュメントを参照ください。 IDN の検証は、DNS ホスト名の検証を有効にしている場合にのみ行われることに注意しましょう。 トップレベルドメインの検証デフォルトでは、ホスト名の検証は既知の TLD の一覧に基づいて行われます。 これはデフォルトで有効になっていますが、無効にすることもできます。無効にするには、 無効にするには、Zend_Validate_EmailAddress が内部で保持している Zend_Validate_Hostname オブジェクトの設定を変更します。 setValidateTld() の詳細な使用法は、 Zend_Validate_Hostname のドキュメントを参照ください。 TLD の検証は、DNS ホスト名の検証を有効にしている場合にのみ行われることに注意しましょう。 メッセージの設定Zend_Validate_EmailAddress は、 Zend_Validate_Hostname を使用してメールアドレスのホスト名部分をチェックします。 Zend Framework 1.10 以降、 Zend_Validate_Hostname 用のメッセージを Zend_Validate_EmailAddress から設定できるようになります。
Zend Framework 1.10 より前のバージョンでは、まず Zend_Validate_Hostname にメッセージをアタッチしてからそれを Zend_Validate_EmailAddress に設定しないと独自のメッセージを返せませんでした。 FloatZend_Validate_Float allows you to validate if a given value contains a floating-point value. This validator validates also localized input. Supported options for Zend_Validate_FloatThe following options are supported for Zend_Validate_Float:
Simple float validationThe simplest way to validate a float is by using the system settings. When no option is used, the environment locale is used for validation:
In the above example we expected that our environment is set to "en" as locale. Localized float validationOften it's useful to be able to validate also localized values. Float values are often written different in other countries. For example using english you will write "1.5". In german you may write "1,5" and in other languages you may use grouping. Zend_Validate_Float is able to validate such notations. But it is limited to the locale you set. See the following code:
As you can see, by using a locale, your input is validated localized. Using a different notation you get a FALSE when the locale forces a different notation. The locale can also be set afterwards by using setLocale() and retrieved by using getLocale(). GreaterThan(日本語)Zend_Validate_GreaterThan により、 与えられた値が最小の境界値よりも大きいかどうか検証できます。
Zend_Validate_GreaterThan でサポートされるオプションZend_Validate_GreaterThan では、下記のオプションがサポートされます。
基本的な使用法任意の値が定義済みの境界より大きいかどうか検証するには、 単に以下の例を使います。
上記の例は、10 以上の全ての値で TRUE を返します。 Hex(日本語)Zend_Validate_Hex により、 任意の値が16進の文字だけを含むかどうか検証できます。 それらは、0 から 9 までと、 文字の大小を区別しないA から F までの、全ての文字です。 検証したい入力に対する長さの制限はありません。
Zend_Validate_Hex でサポートされるオプションZend_Validate_Hex に対する追加オプションはありません。 ホスト名Zend_Validate_Hostname は、ホスト名が仕様を満たしているかどうかの検証を行います。 三種類の形式のホスト名、つまり DNS ホスト名 (たとえば domain.com)、IP アドレス (たとえば 1.2.3.4) そしてローカルホスト名 (たとえば localhost) の検証が可能です。 デフォルトでは DNS ホスト名のみが有効となります。 Zend_Validate_Hostname でサポートされるオプションZend_Validate_Hostname では、下記のオプションがサポートされます。
基本的な使用法基本的な使用法は、以下のようになります。
これは、ホスト名 $hostname を検証し、失敗した場合は その原因を表す便利なエラーメッセージを $validator->getMessages() で取得します。 さまざまな形式のホスト名を検証IP アドレスやローカルホスト名、あるいはその両方を正しいホスト名として認めたいこともあるでしょう。 その場合は、Zend_Validate_Hostname のインスタンスを作成する際にパラメータを渡します。 このパラメータには、どの形式のホスト名を許可するのかを表す整数値を指定しなければなりません。 できるだけ、Zend_Validate_Hostname の定数を使用するようにしましょう。 Zend_Validate_Hostname の定数は次のとおりです。 ALLOW_DNS は DNS ホスト名のみ、 ALLOW_IP は IP アドレス、 ALLOW_LOCAL はローカルネットワーク名、 ALLOW_URI は » RFC3986 に準拠するアドレス、 ALLOW_ALL は前述の4種類のすべて、 を許可します。
IP アドレスだけをチェックするには、以下の例のようにします。
ALLOW_ALL を使用して共通のすべてのホスト名形式を許可するほかに、 これらの形式を組み合わせることもできます。 たとえば、 DNS およびローカルホスト名を許可するには、 Zend_Validate_Hostname のインスタンスを次のように作成します。 国際化ドメイン名を検証国別コードトップレベルドメイン (Country Code Top Level Domains: ccTLDs) の一部、たとえば 'de' (ドイツ) などでは、ドメイン名の中に国際化文字の使用をサポートしています。 これは、国際化ドメイン名 (International Domain Names: IDN) といわれるものです。 これらのドメインについても、Zend_Validate_Hostname の検証プロセスで使用する文字を拡張することで検証できます。
IDN ドメインに対するマッチングを行う方法は、通常のホスト名の場合とまったく同じです。 というのも、 IDN のマッチングはデフォルトで有効になっているからです。 IDN の検証を無効にしたい場合は、Zend_Validate_Hostname のコンストラクタにパラメータを渡すか、あるいは setValidateIdn() メソッドを使用します。 IDN の検証を無効にするには、Zend_Validate_Hostname のコンストラクタに二番目のパラメータを次のように渡します。
あるいは、 TRUE または FALSE を setValidateIdn() に渡すことで、 IDN の検証を有効あるいは無効にすることもできます。 現在サポートされていない IDN ホスト名に対するマッチングを行おうとすると、 国際化文字が含まれている場合に検証に失敗します。 追加の文字を指定した ccTLD ファイルが Zend/Validate/Hostname に存在しない場合は、通常のホスト名の検証を行います。
トップレベルドメインを検証デフォルトでは、ホスト名の検証は既知の TLD の一覧に基づいて行われます。 この機能が不要な場合は、 IDN サポートを無効にするのと同じ方法で無効にできます。 TLD の検証を無効にするには、Zend_Validate_Hostname のコンストラクタに三番目のパラメータを渡します。 以下の例では、 IDN の検証は二番目のパラメータで有効にしています。
あるいは、 TRUE または FALSE を setValidateIdn() に渡すことで、 TLD の検証を有効あるいは無効にすることもできます。
IbanZend_Validate_Iban validates if a given value could be a IBAN number. IBAN is the abbreviation for "International Bank Account Number". Supported options for Zend_Validate_IbanThe following options are supported for Zend_Validate_Iban:
IBAN validationIBAN numbers are always related to a country. This means that different countries use different formats for their IBAN numbers. This is the reason why IBAN numbers always need a locale. By knowing this we already know how to use Zend_Validate_Iban. Application wide localeWe could use the application wide locale. This means that when no option is given at initiation, Zend_Validate_Iban searches for the application wide locale. See the following code snippet:
Ungreedy IBAN validationSometime it is usefull, just to validate if the given value is a IBAN number or not. This means that you don't want to validate it against a defined country. This can be done by using a FALSE as locale.
So any IBAN number will be valid. Note that this should not be done when you accept only accounts from a single country. Region aware IBAN validationTo validate against a defined country, you just need to give the wished locale. You can do this by the option locale and also afterwards by using setLocale().
IdenticalZend_Validate_Identical allows you to validate if a given value is identical with an set haystack. Supported options for Zend_Validate_IdenticalThe following options are supported for Zend_Validate_Identical:
Basic usageTo validate if two values are identical you need to set the origin value as haystack. See the following example which validates two strings.
The validation will only then return TRUE when both values are 100% identical. In our example, when $value is 'origin'. You can set the wished token also afterwards by using the method setToken() and getToken() to get the actual set token. Identical objectsOf course Zend_Validate_Identical can not only validate strings, but also any other variable type like Boolean, Integer, Float, Array or even Objects. As already noted Haystack and Value must be identical.
Form elementsZend_Validate_Identical supports also the comparison of form elements. This can be done by using the element's name as token. See the following example:
By using the elements name from the first element as token for the second element, the validator validates if the second element is equal with the first element. In the case your user does not enter two identical values, you will get an validation error. Strict validationAs mentioned before Zend_Validate_Identical validates tokens strict. You can change this behaviour by using the strict option. The default value for this property is TRUE.
The difference to the previous example is that the validation returns in this case TRUE, even if you compare a integer with string value as long as the content is identical but not the type. For convinience you can also use setStrict() and getStrict(). ConfigurationAs all other validators also Zend_Validate_Identical supports the usage of configuration settings as input parameter. This means that you can configure this validator with an Zend_Config object. But this adds one case which you have to be aware. When you are using an array as haystack then you should wrap it within an 'token' key when it could contain only one element.
The above example validates the integer 123. The reason for this special case is, that you can configure the token which has to be used by giving the 'token' key. So, when your haystack contains one element and this element is named 'token' then you have to wrap it like shown in the example below.
InArray(日本語)任意の値が配列の中で含まれるかどうか、 Zend_Validate_InArrayで検証できます。 それは、多次元配列を確認することもできます。 Zend_Validate_InArray でサポートされるオプション下記のオプションが Zend_Validate_InArray でサポートされます。
単純な配列の検証最も単純な方法は、初期化の際に検索される配列を与えることがまさにそうです。
これは、ちょうどPHPの in_array() メソッドのようにふるまいます
もちろん、 setHaystack()メソッドを用いてその後また、 検証する配列を与えることができます。 getHaystack() は、実際に設定されている配列を返します。
厳密な配列の検証上述のように、配列の中で厳密な検証をすることもできます。 デフォルトでは、整数値0と文字列"0"の違いがありません。 厳密な検証をするときは、この違いも検証されます。そして、同じ型だけが受け入れられます。 厳密な検証は、異なる2つの方法を用いて行なうこともできます。 初期化で、及びメソッドを用いて。 初期化では、以下の構造で配列を与えなければなりません。
haystackキーは、検証する配列を含みます。 そしてstrictキーをTRUEに設定することにより、 検証は厳密な型チェックを用いてなされます。 もちろん、その後この設定値を変えるために、 setStrict()メソッドを使うこともできます。 また、 getStrict() で実際に設定されている内容を取得することもできます。
再帰的な配列の検証PHPの in_array()メソッド に加えて、このバリデータは、多次元配列を検証するために使うこともできます。 多次元配列を検証するためには、 recursiveオプションを設定しなければなりません。
それにより、任意の値が含まれるかどうか配列が再帰的に検証されます。 さらに、 setRecursive() を使って後からこのオプションを設定したり getRecursive() で設定を取得したりすることもできます。
IntZend_Validate_Int validates if a given value is an integer. Also localized integer values are recognised and can be validated. Supported options for Zend_Validate_IntThe following options are supported for Zend_Validate_Int:
Simple integer validationThe simplest way to validate an integer is by using the system settings. When no option is used, the environment locale is used for validation:
In the above example we expected that our environment is set to "en" as locale. As you can see in the third example also grouping is recognised. Localized integer validationOften it's useful to be able to validate also localized values. Integer values are often written different in other countries. For example using english you can write "1234" or "1,234". Both are integer values but the grouping is optional. In german for example you may write "1.234" and in french "1 234". Zend_Validate_Int is able to validate such notations. But it is limited to the locale you set. This means that it not simply strips off the separator, it validates if the correct separator is used. See the following code:
As you can see, by using a locale, your input is validated localized. Using the english notation you get a FALSE when the locale forces a different notation. The locale can also be set afterwards by using setLocale() and retrieved by using getLocale(). Ip(日本語)Zend_Validate_Ip は、与えられた値が IP アドレスかどうか検証できるようにします。 これは IPv4 及び IPv6 標準をサポートします。 Zend_Validate_Ip でサポートされるオプションZend_Validate_Ip では、下記のオプションがサポートされます。
基本的な使用法基本的な使用法は、以下のようになります。
IPv4 または IPV6 だけを検証しばしば、サポートされる形式のうちの1つだけを検証するために役立ちます。 たとえば、ネットワークが IPv4 だけをサポートするときです。 この場合、このバリデータ内で IPv6 を受け付けることは無駄でしょう。 Zend_Validate_Ip をプロトコル1つに制限するために、 オプション allowipv4 または allowipv6 を FALSE に設定できます。 これは、コンストラクタにオプションを与えることによって、 または、その後 setOptions() を用いて行なえます。
IsbnZend_Validate_Isbn allows you to validate an ISBN-10 or ISBN-13 value. Supported options for Zend_Validate_IsbnThe following options are supported for Zend_Validate_Isbn:
Basic usageA basic example of usage is below:
This will validate any ISBN-10 and ISBN-13 without separator. Setting an explicit ISBN validation typeAn example of an ISBN type restriction is below:
The above will validate only ISBN-13 values. Valid types include:
Specifying a separator restrictionAn example of separator restriction is below:
Valid separators include:
LessThan(日本語)Zend_Validate_LessThan により、 与えられた値が最大の境界値よりも小さいかどうか検証できます。 それは Zend_Validate_GreaterThan に対応するものです。
Zend_Validate_LessThan でサポートされるオプションZend_Validate_LessThan では、下記のオプションがサポートされます。
基本的な使用法任意の値が定義済みの境界より小さいかどうか検証するには、 単に以下の例を使います。
上記の例は、10 以下の全ての値で TRUE を返します。 NotEmptyThis validator allows you to validate if a given value is not empty. This is often useful when working with form elements or other user input, where you can use it to ensure required elements have values associated with them. Supported options for Zend_Validate_NotEmptyThe following options are supported for Zend_Validate_NotEmpty:
Default behaviour for Zend_Validate_NotEmptyBy default, this validator works differently than you would expect when you've worked with PHP's empty() function. In particular, this validator will evaluate both the integer 0 and string '0' as empty.
Changing behaviour for Zend_Validate_NotEmptySome projects have differing opinions of what is considered an "empty" value: a string with only whitespace might be considered empty, or 0 may be considered non-empty (particularly for boolean sequences). To accomodate differing needs, Zend_Validate_NotEmpty allows you to configure which types should be validated as empty and which not. The following types can be handled:
All other given values will return TRUE per default. There are several ways to select which of the above types are validated. You can give one or multiple types and add them, you can give an array, you can use constants, or you can give a textual string. See the following examples:
You can also provide an instance of Zend_Config to set the desired types. To set types after instantiation, use the setType() method. PostCodeZend_Validate_PostCode allows you to determine if a given value is a valid postal code. Postal codes are specific to cities, and in some locales termed ZIP codes. Zend_Validate_PostCode knows more than 160 different postal code formates. To select the correct format there are 2 ways. You can either use a fully qualified locale or you can set your own format manually. Using a locale is more convenient as Zend Framework already knows the appropriate postal code format for each locale; however, you need to use the fully qualified locale (one containing a region specifier) to do so. For instance, the locale "de" is a locale but could not be used with Zend_Validate_PostCode as it does not include the region; "de_AT", however, would be a valid locale, as it specifies the region code ("AT", for Austria).
When you don't set a locale yourself, then Zend_Validate_PostCode will use the application wide set locale, or, when there is none, the locale returned by Zend_Locale.
You can also change the locale afterwards by calling setLocale(). And of course you can get the actual used locale by calling getLocale().
Postal code formats themself are simply regular expression strings. When the international postal code format, which is used by setting the locale, does not fit your needs, then you can also manually set a format by calling setFormat().
Constructor optionsAt it's most basic, you may pass either a Zend_Locale object or a string representing a fully qualified locale to the constructor of Zend_Validate_PostCode.
Additionally, you may pass either an array or a Zend_Config object to the constructor. When you do so, you must include either the key "locale" or "format"; these will be used to set the appropriate values in the validator object.
Supported options for Zend_Validate_PostCodeThe following options are supported for Zend_Validate_PostCode:
RegexThis validator allows you to validate if a given string conforms a defined regular expression. Supported options for Zend_Validate_RegexThe following options are supported for Zend_Validate_Regex:
Validation with Zend_Validate_RegexValidation with regular expressions allows to have complicated validations being done without writing a own validator. The usage of regular expression is quite common and simple. Let's look at some examples:
As you can see, the pattern has to be given using the same syntax as for preg_match(). For details about regular expressions take a look into » PHP's manual about PCRE pattern syntax. Pattern handlingIt is also possible to set a different pattern afterwards by using setPattern() and to get the actual set pattern with getPattern().
サイトマップ・バリデータ以下のバリデータは、 » サイトマップ XML プロトコル に従います。 Sitemap_Changefreq文字列がサイトマップ XML 文書で 'changefreq' 要素として 使用できるかどうか検証します。 有効値は、 'always', 'hourly', 'daily', 'weekly', 'monthly', 'yearly' または 'never' です。 値が文字列で、上記で指定される頻度のうちの1つと等しい場合に限り、 TRUEを返します。 Sitemap_Lastmod文字列がサイトマップ XML 文書で 'lastmod' 要素として 使用できるかどうか検証します。 lastmod要素は W3C 日付文字列を含まなければなりません。 そして、任意で時間についての情報を無効にします。 値が文字列で、プロトコルに従って妥当な場合に限り、 TRUEを返します。 Example #1 サイトマップ Lastmod バリデータ
Sitemap_Loc文字列がサイトマップ XML 文書で 'loc' 要素として 使用できるかどうか検証します。 これは内部的に Zend_Form::check()を使います。 詳しくはURI の検証を読んでください。 Sitemap_Priority文字列がサイトマップ XML 文書で 'priority' 要素として 使用できるかどうか検証します。 値は、0.0と1.0の間の小数でなければなりません。 このバリデータは、数値と文字列値の両方を受け入れます。 Example #2 サイトマップ 優先度 バリデータ
Zend_Validate_Sitemap_* でサポートされるオプションサイトマップ・バリデータのいずれもサポートするオプションはありません。 StringLengthThis validator allows you to validate if a given string is between a defined length.
Supported options for Zend_Validate_StringLengthThe following options are supported for Zend_Validate_StringLength:
Default behaviour for Zend_Validate_StringLengthPer default this validator checks if a value is between min and max. But for min the default value is 0 and for max it is NULL which means unlimited. So per default, without giving any options, this validator only checks if the input is a string. Limiting the maximum allowed length of a stringTo limit the maximum allowed length of a string you need to set the max property. It accepts an integer value as input.
You can set the maximum allowed length also afterwards by using the setMax() method. And getMax() to retrieve the actual maximum border.
Limiting the minimal required length of a stringTo limit the minimal required length of a string you need to set the min property. It accepts also an integer value as input.
You can set the minimal requested length also afterwards by using the setMin() method. And getMin() to retrieve the actual minimum border.
Limiting a string on both sidesSometimes it is required to get a string which has a maximal defined length but which is also minimal chars long. For example when you have a textbox where a user can enter his name, then you may want to limit the name to maximum 30 chars but want to get sure that he entered his name. So you limit the mimimum required length to 3 chars. See the following example:
Encoding of valuesStrings are always using a encoding. Even when you don't set the encoding explicit, PHP uses one. When your application is using a different encoding than PHP itself then you should set an encoding yourself. You can set your own encoding at initiation with the encoding option, or by using the setEncoding() method. We assume that your installation uses ISO and your application it set to ISO. In this case you will see the below behaviour.
So when your installation and your application are using different encodings, then you should always set an encoding yourself.
|