[PHP] 文字列の前後の全角スペースを取り除くには

Read More

PHPで文字列の前後の全角スペースを取り除く方法。


希望する動作:
 文字列の前後の全角スペースを取り除きたい。


以下の例を順に見ていけば誰でも簡単に実装ができるはず。はず。

■文字列の末尾の全角スペースを取り除く方法
$str = ' a i u e o ';
$str = preg_replace('/[\s]+$/u', '', $str);
echo $str;


■実行結果
 a i u e o
文字列の後ろの全角スペースが除去されている。



次は文字列の前のスペースのみ取り除く。
■文字列の前方の全角スペースを取り除く方法
$str = ' a i u e o ';
$str = preg_replace('/^[\s]+/u', '', $str);
echo $str;


■実行結果
a i u e o 
文字列の前の全角スペースが除去されている。



最後にこれらを組み合わせると前後の全角スペースを取り除くものが完成する。
■文字列の前方の全角スペースを取り除く方法
$str = ' a i u e o ';
$str = preg_replace('/^[\s]+|[\s]+$/u', '', $str);
echo $str;


■実行結果
a i u e o
これで文字列の前後の全角スペースが除去された。



最後に正規表現で使用しているメタ文字"\s"についての補足。
サイトによっては説明文に空白文字と書かれているものがあった。
ここでいう空白文字とは「半角スペース・タブ文字・改行・改ページ」のことを指している。
この時パターン修飾子で"/u"を指定すると先述したものに加え全角スペースが含まれるようになる。
パターンと文字列はUTF-8で処理されるようになるのでやや注意。

まとめると
メタ文字"\s"は、
全角スペース(※)・半角スペース・タブ文字(\t)・改行(\r,\n)・改ページ(\f)
とマッチする。
※パターン修飾子でuを指定している時のみ



mb_trim()を自前で実装するならこの処理使えばいいんじゃないかな。
正規表現をいちいち覚えておくって面倒なんだよねえ。







コメント投稿

名前 *
(10文字以内)
コメント *
(1000文字以内)