入力された文字列データのtrim。入力から前後にある改行・空白を取り除いてくれるのですが、できればマルチバイト文字(いわゆる全角)の空白も対象にしたい(誤って空白だけ入力するケースで、IMEがONの状態の場合がある)。

 

毎回書くのもアレなので、自分用ライブラリとして書いてみました。多少冗長になってますが、分かり易さとのトレードオフなので許容範囲ということにしておきます。

 

#徐々に改良するかもしれないし、しないかもしれない

function mb_trim($arg) {
    while (mb_strlen($arg) > 0) {
        $str = trim($arg);
        if (mb_strlen($str) === 0) { break; }
        if (mb_substr($str, 0, 1) === ' ') { $str = mb_substr($str, 1); }
        if (mb_strlen($str) === 0) { break; }
        if (mb_substr($str, mb_strlen($str)-1, 1) === ' ') { $str = mb_substr($str, 0, mb_strlen($str)-1); }
        if ($str === $arg) { break; }
        $arg = $str;
    }
    return $str;
}

 

 

ちなみに正規表現で書くと

function mb_trim($arg) {
    return preg_replace('/¥A[¥p{C}¥p{Z}]++|[¥p{C}¥p{Z}]++¥z/u', '', $arg);
}

だけでいいようです。しかも制御文字も弾いてくれるというスグレモノ(こちらから)。このくらいパッと書けるようになりたいなぁ。