php: Delete single-byte space, double-byte space of a string

php
で入力された文字列などの前後のスペースを除去する場合のメモです。

php
では「trim()」という関数がありますが、半角のスペースは削除してくれるのですが、

全角のスペースは削除されません。

半角のスペースのみ削除する場合はtrim()でいいと思います。

なので、今回は文字列先頭、末尾にある半角・全角スペース

正規表現
を使用し削除する方法をメモします。


先頭、末尾の半角・全角スペース削除

・先頭の半角・全角スペース削除

1
$str
= preg_replace('/^[  ]+/u', '', $str);

“^[  ]”で行頭が半角スペース、または全角スペースで始まる文字に一致させます。

“+”で直前の文字の1回以上の繰り返しに一致させます。

上記で一致した値を空文字で置換しています。


・末尾の半角・全角スペース削除

1
$str
= preg_replace('/[  ]+$/u', '', $str);

“[  ]+”で半角スペース、または全角スペースの1回以上の繰り返しに一致させます。

“$”で末尾を示すので末尾が半角全角スペースの場合に一致します。

上記で一致した値を空文字で置換しています。


上記の両方を行うことで先頭、末尾の半角・全角スペースを削除することができます。

1
2
$str
= preg_replace('/^[  ]+/u', '', $str);
$str
= preg_replace('/[  ]+$/u', '', $str);

上記を関数にした場合

対象の文字列を作成した関数の引数で渡し、

スペースを削除した値をリターンします。

1
2
3
4
5
6
7
8
9
function
space_trim ($str) {

// 行頭の半角、全角スペースを、空文字に置き換える

$str
= preg_replace('/^[  ]+/u', '', $str);

// 末尾の半角、全角スペースを、空文字に置き換える

$str
= preg_replace('/[  ]+$/u', '', $str);

return
$str;
}

Leave a Reply