PHP – 雛形 – 全角も含めた文字列のトリム

概要

  • PHPにはtrim系の関数が準備されているが、全角スペースには対応していない
  • str_replace()を使うと、前後だけでなく文字列中のスペースが除去されてしまう
  • そこで、preg_replace()で正規表現によって前後のスペースだけ除去する

実装例

以下のコードの関数の中でトリムを実装している。

第1引数でサーチする文字、第2引数でマッチした文字の変更後の文字、第3引数で対象文字列を指定。

第1引数は「先頭か末尾にある半角か全角のスペース」を表現しているが、その過程は以下のとおり。

  • '/.../u'で正規表現の文字列をUTF-8として扱う
  • '/\A...|...\z/'uで先頭部分か末尾部分を指定
  • [\x20\xE3\x80\x80]は文字クラスで、\x20が半角スペース、\xE3\x80\x80が全角スペースを表し、それらの何れかの文字を指定
  • []++文字クラスの後の++は絶対量指定子と呼ばれるもので、通常使われる最大量指定子+(1文字以上にマッチ)に対してバックトラックが抑制されるとのこと

その他の文字のトリム

文字クラス[]の中に指定する文字列。

\p{Z}
区切り文字(半角・全角スペースも含まれる)。
\p{C}
その他の文字(制御文字)。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です