RadPHP XEにはZend Frameworkが同封されています。
RadPHPからZend Frameworkのデータ検証用コンポーネント Zend_Validate を使用してみます。
必要なコンポーネントの読み込み
use_unit("Zend/framework/library/Zend/Validate/Alnum.php");
入力された値の検証
function Button1Click($sender, $params)
{
$validator = new Zend_Validate_Alnum();
if ($validator->isValid($this->Edit1->Text)) {
$this->Label1->Caption = '正しい値が入力されました。';
} else {
$this->Label1->Caption = '入力された値に間違いがあります。';
}
}
よく使う標準のバリデーションクラス
(参考:Zend Framework: Documentation: 標準のバリデーションクラス群 – Zend Framework Manual
- 英数字のみで構成されているか
use_unit("Zend/framework/library/Zend/Validate/Alnum.php"); $validator = new Zend_Validate_Alnum();
- 英字のみで構成されているか
use_unit("Zend/framework/library/Zend/Validate/Alpha.php"); $validator = new Zend_Validate_Alpha();
- 指定された範囲内にあるか
use_unit("Zend/framework/library/Zend/Validate/Between.php"); $validator = new Zend_Validate_Between(array('min' => 0, 'max' => 10));
- 正しい日付の形式か
use_unit("Zend/framework/library/Zend/Validate/Date.php"); $validator = new Zend_Validate_Date(array('format' => 'yyyy/mm/dd'));
- 数字のみで構成されているか
use_unit("Zend/framework/library/Zend/Validate/Digits.php"); $validator = new Zend_Validate_Digits();
- 正しいメールアドレスの形式か
use_unit("Zend/framework/library/Zend/Validate/EmailAddress.php"); $validator = new Zend_Validate_EmailAddress();
- 設定した値よりも大きいか
use_unit("Zend/framework/library/Zend/Validate/GreaterThan.php"); $validator = new Zend_Validate_GreaterThan(array('min' => 10));
- 整数型か
use_unit("Zend/framework/library/Zend/Validate/Int.php"); $validator = new Zend_Validate_Int();
- 設定した値よりも小さいか
use_unit("Zend/framework/library/Zend/Validate/LessThan.php"); $validator = new Zend_Validate_LessThan(array('max' => 10));
- 空でないか
use_unit("Zend/framework/library/Zend/Validate/NotEmpty.php"); $validator = new Zend_Validate_NotEmpty();
- 正規表現にマッチするか
use_unit("Zend/framework/library/Zend/Validate/Regex.php"); $validator = new Zend_Validate_Regex(array('pattern' => '/^Test/'));
- 文字数が指定された範囲内にあるか
use_unit("Zend/framework/library/Zend/Validate/StringLength.php"); $validator = new Zend_Validate_StringLength(array('min' => 5, 'max' => 10)); //マルチバイト文字の文字数を検証するときに必要 iconv_set_encoding('internal_encoding', 'utf-8');