cakephp AlphaNumericを環境非依存にする

 2009/05/28

以前にも書いたんだけど、CentOS5系を利用していると、バリデーションのAlphaNumericが動作してくれない。その回答としては、環境に問題あるので、PCREをバージョンアップして、という風に書いたが、これだと、納品後どのサーバに配置するかによって、アプリケーションの動作に差が出てしまう。環境差によって差があるのであれば、それを検証するテスト書かなきゃいけなくなるので、今回は本体を修正して、環境非依存な状態にする方法を紹介する。

libsディレクトリの中にあるvalidation.phpを修正する。

修正前

function alphaNumeric($check) {
    $_this =& Validation::getInstance();
    $_this->__reset();
    $_this->check = $check;

    if (is_array($check)) {
        $_this->_extract($check);
    }

    if (empty($_this->check) && $_this->check != '0') {
        return false;
    }
    $_this->regex = '/^[\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}]+$/mu';
    return $_this->_check();
}

修正後。$_this->regexのところが普通の正規表現に変わっている。

function alphaNumeric($check) {
    $_this =& Validation::getInstance();
    $_this->__reset();
    $_this->check = $check;

    if (is_array($check)) {
        $_this->_extract($check);
    }

    if (empty($_this->check) && $_this->check != '0') {
        return false;
    }
    $_this->regex = '/^[a-z\d]*$/i';
    return $_this->_check();
}

ちゅーか、なんでPCREつかっているのか分からん。

 2009/05/28

著作

寄稿

Latest post: