文字列の前後にある空白文字(スペース・タブ)を取り除くpreg_replace関数やtrim関数を使い、文字列の前後に含まれる空白を除去する方法について解説します。結局どの方法を使えばいいの?文字列の前後の空白を取り除くpreg_replace関数やtrim関数を使うと、文字列の前後にあるスペースやタブなどの空白文字を取り除くことができます。フォームなどでユーザーが入力した値をシステムが受け取る際に、メールアドレスやパスワードの前後に打ち間違いなどで空白文字が含まれていることがあります。これらの入力ミスをシステム側で自動的に取り除くことができると非常に便利です。そこで今回は、次の4つの関数を使う方法で文字列の前後に含まれる空白を取り除く方法を解説していきます。文字列の末尾にある空白を除去preg_replace関数で正規表現を使う方法ではマルチバイトの空白も取り除くことができますが、下の3つはマルチバイトの空白に対応していません。全角スペースも含めて取り除きたい場合は、preg_replace関数を使った方法が有効になります。それでは、1つずつみていきましょう。正規表現を使って文字列の前後に空白があるかを検索し、もし見つかった場合は空の値に差し替えることで空白を取り除きます。"テキストの前後にある空白を削除する"$str1には空白を取り除く前の文字列、$str2には取り除いた後の文字列が入ります。出力結果から、文字列の前後にあった空白が綺麗に取り除かれていることが分かりますね。正規表現のパターン「‘/\A[\p{C}\p{Z}]++|[\p{C}\p{Z}]++\z/u’」について解説します。$str1);パターンの末尾に付いている「u」はパターン修飾子と呼び、この値はパターンと検索する文字列$str1を「UTF-8で処理するという明示的な指定になります。$str1);パターンの前後にある「\A」は文字列の先頭、「\z」は文字列の末尾を指しています。PHPの正規表現では「^」や「$」などのデリミタがよく使用されますが、これらのデリミタは「行」の先頭と末尾を指すため「文字列」の先頭と削除を指すのとは少しニュアンスが異なります。ここでは正確に文字列の先頭と末尾をチェックするために、「\A」「\z」を使います。今回使っているパターンは文字列の先頭を指す「\A[\p{C}\p{Z}]++」か、末尾を指す「[\p{C}\p{Z}]++\z」の2つのパートで構成されています。$str1);「\p{C}」と「\p{Z}」はUnicodeの文字プロパティです。「区切り文字」を指しています。$str1);「++」は絶対最大量指定子と呼ばれ、通常は「1字以上の繰り返し」の指定では「+」を使いますが、さらにもう一つ付け加えてた「++」と記述しています。この指定は検索のバックトラックを防いでパフォーマンスを向上させる効果があります。(パイプライン)」で折り返しいた末尾の検索パターンについても末尾に「\z」つく以外は同じ内容です。以上の検索パターンを持って、文字列の先頭か末尾に空白文字、もしくは不要な文字が含まれていたら「空」に置き換えを行います。文字列の先頭・末尾にある空白(半角スペース、Tab)を除去する関数です。Sample"trim関数は文字列の前後にある、次の空白文字を削除することができます。垂直タブltrim関数ltrim関数は文字列の先頭のみを対象に空白文字を取り除きます。"末尾の空白文字は残ります。取り除く対象の空白文字はtrim関数と同じです。rtrim関数rtrim関数はltrim関数とは対象的に、文字列の末尾のみを対象に空白文字を取り除きます。Sample"文字列の末尾のみ空白が取り除かれ、先頭の空白文字はそのままであることが確認できます。結局どの方法を使えばいいの?マルチバイトの文字を扱う想定であればpreg_replace関数を使い、それ以外の環境ではtrim関数を使う方法が手軽です。パスワードなど日本語での入力を想定していない場合でも日本語の入力値が送られてくるケースも考えられるため、基本的にはマルチバイト対応をしておいた方が良いと思います。こちらの記事は役に立ちましたか?GoodBadありがとうございます。よろしければ、あわせてフィードバックや要望などをご入力ください。コメント送信コメントありがとうございます!運営の参考にさせていただきます。)PHP2019-11-16フォームの基本構造を作成するPHP2019-11-16はしご高など旧字体漢字の文字化けを防ぐRECOMMEND遅いインターネット評論家の宇野常寛の新著。2018年頃から提唱されている「インターネットによって失った未来をインターネットによって取り戻す」をテーマにした本書が、いよいよ2月20日から書店に並びます。宇野さんがずっと温めてきた構想が詰まった1冊なので、個人的に非常に楽しみにしている一冊です。