php验证程序,PHP 验证

/**

* 全角を半角にする

* @param string $instr 変換前文字列

* @return string 変換後文字列

*/

function zen2han($instr) {

$flag = FALSE; //直前文字が全角カタカナならTRUE

$len = mb_strlen($instr);

$ofst = 1;

$outstr = '';

for ($ofst = 0; $ofst < $len; $ofst++) {

$ch = mb_substr($instr, $ofst, 1);

if ($ch == 'ー') {

if ($flag) $outstr .= 'ー'; //カタカナの長音記号

else $outstr .= $ch;

} else if (mb_ereg_match('[ァ-ヶ]+', $ch)) { //カタカナの範囲

$outstr .= mb_convert_kana($ch, 'k');

$flag = TRUE;

} else if (mb_ereg_match('[0-9]+', $ch)) { //全角数字の範囲

$outstr .= mb_convert_kana($ch, 'n');

$flag = TRUE;

} else if (mb_ereg_match('[A-Z]+', $ch)) { //全角英字の範囲

$outstr .= mb_convert_kana($ch, 'r');

$flag = TRUE;

} else if (mb_ereg_match('[ぁ-ん]+', $ch)) { //ひらがなの範囲

$flag = TRUE;

$outstr .= mb_convert_kana($ch, 'h');

} else {

$outstr .= $ch;

$flag = FALSE;

}

}

return $outstr;

}

/**

* 全角のみチェック

* @param $value

* [0]: 項目名

* [1]: value

* [2]: エラーコード
(必要ではない)

*/

function EC_FULL_ONLY_CHECK($value) {

if (isset($this->arrErr[$value[0]])) {

return;

}

$this->createParam($value);

// 値

$str = $this->arrParam[$value[1]];

//全角

for($i = 0; $i < mb_strlen($str, CHAR_CODE); $i++) {

if ((ord(mb_substr($str, $i, 1, CHAR_CODE)) < 128) || preg_match("/^[ヲ-゚ー]+$/u", $str)) {

// エラーコードがある場合

//$this->arrErr[$value[1]] = "※ " . $value[0] . "は全角文字を入力してください。
";

$this->arrErr[$value[1]] = SC_Utils_Ex::sfGetMessage(VALIDATION_STRING_TYPE_ZENKAKU, $value[0]);

break;

}

}

}

/**

* 1半角数字英字文字以上のチェック(EC用)

*

* @param $value

* [0]: 項目名

* [1]: value

*/

function EC_HALF_NUMBER_ENG_CHECK($value) {

if(isset($this->arrErr[$value[1]])) {

return;

}

$this->createParam($value);

// 値

$str = $this->arrParam[$value[1]];

if(preg_match("/^[a-zA-Z]+$/", $str)) {

//$this->arrErr[$value[1]] = "※ " . $value[0] . "${0}は${1}を含む${2}文字以上を入力してください。
";

$this->arrErr[$value[1]] = SC_Utils_Ex::sfGetMessage (VALIDATION_COMMON_STRING_NOTCONTAIN, array($value[0],'半角英字或るは半角数字',1));

} else if (preg_match("/^[0-9]+$/", $str)) {

//$this->arrErr[$value[1]] = "※ " . $value[0] . "${0}は${1}を含む${2}文字以上を入力してください。
";

$this->arrErr[$value[1]] = SC_Utils_Ex::sfGetMessage (VALIDATION_COMMON_STRING_NOTCONTAIN, array($value[0],'半角英字或るは半角数字',1));

} else if (!preg_match("/^[0-9a-zA-Z]+$/", $str)) {

//$this->arrErr[$value[1]] = "※ " . $value[0] . "${0}は${1}を含む${2}文字以上を入力してください。
";

$this->arrErr[$value[1]] = SC_Utils_Ex::sfGetMessage (VALIDATION_COMMON_STRING_NOTCONTAIN, array($value[0],'半角英字或るは半角数字',1));

}

}

/**

* 半角英数字のチェック

*

* @param $value

* [0]: 項目名

* [1]: value

*/

function EC_HALF_ENG_AND_NUM_CHECK($value) {

if(isset($this->arrErr[$value[1]])) {

return;

}

$this->createParam($value);

if( strlen($this->arrParam[$value[1]]) > 0 && !preg_match("/^[0-9a-zA-Z]+$/", $this->arrParam[$value[1]])) {

//$this->arrErr[$value[1]] = "※ " . $value[0] . "は半角英数字で入力してください。
";

$this->arrErr[$value[1]] = SC_Utils_Ex::sfGetMessage(VALIDATION_STRING_TYPE_ALNUM, $value[0]);

}

}

/**

* 半角英数カナのチェック

*

* @param $value

* [0]: 項目名

* [1]: value

*/

function EC_HALF_ENG_NUM_KANA_CHECK($value) {

if(isset($this->arrErr[$value[1]])) {

return;

}

$this->createParam($value);

if( strlen($this->arrParam[$value[1]]) > 0 && !preg_match("/^[0-9a-zA-Zァ-ヶヲ-゚ー]+$/u", $this->arrParam[$value[1]])) {

//$this->arrErr[$value[1]] = "※ " . $value[0] . "は半角英数カナ文字を入力してください。
";

$this->arrErr[$value[1]] = SC_Utils_Ex::sfGetMessage(VALIDATION_STRING_TYPE_HANKAKUKANA_ALNUM, $value[0]);

}

}

/**

* メールアドレス形式の判定

*

* @param array $value 各要素は以下の通り。

* [0]: 項目名

* [1]: 判定対象を格納している配列キー

* @return void

*/

function EC_EMAIL_CHECK( $value ){

if(isset($this->arrErr[$value[1]])) {

return;

}

$this->createParam($value);

// 入力がない場合処理しない

if (strlen($this->arrParam[$value[1]]) === 0) {

return;

}

$wsp = '[\x20\x09]';

$vchar = '[\x21-\x7e]';

$quoted_pair = "\\\\(?:$vchar|$wsp)";

$qtext = '[\x21\x23-\x5b\x5d-\x7e]';

$qcontent = "(?:$qtext|$quoted_pair)";

$quoted_string = "\"$qcontent*\"";

$atext = '[a-zA-Z0-9!#$%&\'*+\-\/\=?^_`{|}~]';

$dot_atom_text = "$atext+(?:[.]$atext+)*";

$dot_atom = $dot_atom_text;

$local_part = "(?:$dot_atom|$quoted_string)";

$domain = $dot_atom;

$addr_spec = "${local_part}[@]$domain";

$dot_atom_loose = "$atext+(?:[.]|$atext)*";

$local_part_loose = "(?:$dot_atom_loose|$quoted_string)";

$addr_spec_loose = "${local_part_loose}[@]$domain";

if (RFC_COMPLIANT_EMAIL_CHECK) {

$regexp = "/\A${addr_spec}\z/";

} else {

// 携帯メールアドレス用に、..や.@を許容する。

$regexp = "/\A${addr_spec_loose}\z/";

}

if (!preg_match($regexp, $this->arrParam[$value[1]])) {

//$this->arrErr[$value[1]] = "※ " . $value[0] . "の形式が不正です。
";

$this->arrErr[$value[1]] = SC_Utils_Ex::sfGetMessage(VALIDATION_STRING_FORMATINVALID, $value[0]);

return;

}

// 最大文字数制限の判定 (#871)

$arrValueTemp = $value;

$arrValueTemp[2] = 256;

$this->MAX_LENGTH_CHECK($arrValueTemp);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值