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 件のコメント:
コメントを投稿