【覚書】PHPでフォームから入力された文字列の先頭・末尾の全角半角スペースを取り除く方法

スポンサー

※当サイトではアフィリエイトプログラムを利用して商品を紹介しています。

最近フロントエンドの記事が多かったため、サーバー側のプログラム処理について書きます。

フォームから入力されたテキストをプログラムの処理に渡す前に、不要なスペースを取り除いておかないと、ユーザーが意図した動きをしないことがあります。

「 コネクト」「コネクト  」「 コネクト WEB 」

のように入力された場合です。いたずら目的で入力されたり、どこかのサイトから部分的にコピペしたような場合でしょうか?

入力された文字列をそのまま表示したり、登録するような場合はいいのですが、例えば、入力された文字列で、DBの検索をかけたり、APIにクエリとして投げるような場合には、先頭・末尾のスペースは取り除いてテキストの部分のみ渡します。

必要な処理

  • 先頭と末尾のスペースを削除する
  • 全角・半角のスペースどちらとも削除する
  • 複数のテキストの間のスペースは削除しない
$query = $_POST['data'];

で入力値を$queryにセットしておきます。
※$_POSTの部分は、$_GETや$_REQUESTの場合もアリ。
※ここで、htmlspecialcharsなどで、XSS対策をしておく方がいいです。

先頭・末尾の半角スペースの削除はtrim関数で

$query = trim($query);

これで、半角のスペースの対応はOKです。

先頭・末尾の全角スペースは正規表現を使って置換

以下、文字コードがUTF-8を前提とした処理です。

preg_replace()のマッチングのための正規表現で、「 (全角スペース)」を指定する方法。

$query = preg_replace('/^[\s ]*(.*?)[\s ]*$/u', '\1', $query);

あるいは、マルチバイト関数のmb_preg_replace()のマッチングのための正規表現で、「 (全角スペース)」を指定する方法。

mb_regex_encoding('UTF-8');
$query = mb_ereg_replace('^[\s ]*(.*?)[\s ]*$', '\1', $query);

いずれかの方法で全角スペースも取り除くことができます。

PHP
スポンサー
コネクト

コメント

タイトルとURLをコピーしました