[CakePHP2.x]validateのalphaNumericが環境に依存していた

使用環境:CakePHP2.3.1

 

現在開発中のシステムで、validate処理実装中に

「alphaNumeric」が正しく動作していなかったので調査してみたら

環境に依存する書き方になってた・・・

実は1.2から既にあったようだ。

忘れないようにメモ。

 

 

修正対象は\\lib\Cake\Utility\validation.php

 

修正前はPCREを利用する形でチェックを行っているが

PCREがバグったバージョンのPHPがあるそうで。修正版にバージョンアップしてもなおるそうです。

	public static function alphaNumeric($check) {		if (is_array($check)) {			extract(self::_defaults($check));		}		if (empty($check) && $check != '0') {			return false;		}		return self::_check($check, '/^[\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}]+$/Du');	}

 

 

チェックする正規表現を普通の正規表現に書き換え

	public static function alphaNumeric($check) {		if (is_array($check)) {			extract(self::_defaults($check));		}		if (empty($check) && $check != '0') {			return false;		}		//環境依存しないよう修正//		return self::_check($check, '/^[\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}]+$/Du');		return self::_check($check, '/^[a-z\d]*$/i');	}

 

1.2時代から同一の書式みたいなので、ご注意をば。

参考にさせて頂いたサイト

http://www.ryuzee.com/contents/blog/2274