validate.php

<?php
/*-----------------------------------------------------------------------------
cheetan is licensed under the MIT license.
copyright (c) 2006 cheetan all right reserved.
http://php.cheetan.net/
-----------------------------------------------------------------------------*/
class CValidate extends CObject
{
/*
 * 値が空欄ならエラーを返します。
 *
 * @param    string  チェックする文字列
 * @param    string  エラーとして表示させる文字列 エラーをbooleanで受け取りたいときにはブランクにする
 * @return   string  エラー文言表示またはboolean
 */
	function notempty( $data, $errmsg = "" )
	{
		return $this->_check( ( $data !== '' ), $errmsg );
	}


/*
 * 値が空欄ならエラーを返します。
 *
 * @param    string  チェックする文字列
 * @param    number  値域の最小値
 * @param    number  値域の最大値
 * @param    string  エラーとして表示させる文字列 エラーをbooleanで受け取りたいときにはブランクにする
 * @return   string  エラー文言表示またはboolean
 */
	function len( $data, $min, $max, $errmsg = "" )
	{
		$len	= strlen( $data );
		$ret	= ( $min <= $len && $len <= $max ) ? 1 : 0;
		return $this->_check( $ret, $errmsg );
	}


/*
 * 数値かどうかを判断します。
 *
 * @param    string  チェックする文字列
 * @param    string  エラーとして表示させる文字列 エラーをbooleanで受け取りたいときにはブランクにする
 * @return   string  エラー文言表示またはboolean
 */
	function number( $data, $errmsg = "" )
	{
// 意図する判断はできないかも
// 1.234e10とかも通るので注意
		return $this->_check( is_numeric( $data ), $errmsg );
	}
	
	
/*
 * 半角英数かどうかを判断します。
 *
 * @param    string  チェックする文字列
 * @param    string  エラーとして表示させる文字列 エラーをbooleanで受け取りたいときにはブランクにする
 * @return   string  エラー文言表示またはboolean
 */
	function eisu( $data, $errmsg = "" )
	{
// 容量を少なくしたいなら
// return $this->_check( preg_match("/^[0-9a-z]+$/i",$data), $errmsg );
// にする、ただ2バイトしか変わらない。
		return $this->_check( preg_match("/^[0-9a-zA-Z]+$/",$data), $errmsg );
	}


/*
 * メールアドレスとして妥当かどうかを判断します。
 *
 * @param    string   チェックする文字列
 * @param    string   エラーとして表示させる文字列 エラーをbooleanで受け取りたいときにはブランクにする
 * @return   string   エラー文言表示またはboolean
 */
	function email( $data, $errmsg = "" )
	{
// ここは突っ込みどころ満載
// ローカルパート(@より前)はオイトイテ
//
// ホスト名の仕様は、ピリオドで区切られた各名称は63文字以下、全体として255文字以下で命名される。
// [a-z0-9][a-z0-9\\.\\-]{0,63}
// これだと最大64文字になる
// 全体として255文字以下というのは無視
// [a-z]{2,4}というのがあれば com|org|net|biz|info|name|net|pro|aero|coop| は必要ない
		return $this->_check( preg_match( '/\\A(?:^([a-z0-9][a-z0-9_\\-\\.\\+]*)@([a-z0-9][a-z0-9\\.\\-]{0,63}\\.(com|org|net|biz|info|name|net|pro|aero|coop|museum|[a-z]{2,4}))$)\\z/i', $data ), $errmsg );
	}

	
/*
 * エラーの挙動をエラー文言表示かbooleanか振り分けます。
 *
 * @param    boolean  チェックする文字列
 * @param    string   エラーとして表示させる文字列 エラーをbooleanで受け取りたいときにはブランクにする
 * @return   string|boolean   エラー文言表示またはboolean
 */
	function _check( $b, $errmsg )
	{
		if( $b )
		{
			if( $errmsg )	return "";
			else			return TRUE;
		}
		else
		{
			if( $errmsg )	return $errmsg;
			else			return FALSE;
		}
	}
}
?>

関連記事

スポンサーリンク

CalendarList: insert

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る