2016年9月30日金曜日

cakephp3 Trimについて

PHP Ver 5.6.27
CakePHP Ver 3.1.9


入力値の前後にある全角/半角スペースを取り除きたい

cakephp3 の Validation では全角スペースだけが入力された場合などは、notEmpty を指定していても、
普通に通ってしまう。

ということで Trim しなければならないのですが、どこのタイミングで行うか。

調べた結果、公式に載っていました。
http://book.cakephp.org/3.0/ja/orm/saving-data.html#before-marshal

テーブルまたはビヘイビアクラスの beforeMarshal メソッドで行いなさいと。
 
タイミングはこれでOK。
しかし、ここに記載されている通り デフォルトのメソッド Trim だけを行ってしまうと
全角スペースは対応できない。

ってことで、全角スペースにも対応した Trim メソッドを作成することに。

----------------------------------

    public static function mb_trim($str) {
        return trim(preg_replace('/[  ]+$/u', '', preg_replace('/^[  ]+/u', '', $str)));
    }
----------------------------------
 
これで良いかと思いきや、半角スペース - 垂直タブ - 全角スペースみたいな入力を
されてしまうと対応できないんですね・・・
対応が難しそうなので、このメソッドは暫定でこのままにしておいて、後々考えようと
思います。 

0 件のコメント:

コメントを投稿