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

  • このエントリーをはてなブックマークに追加
  • LINEで送る

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

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

「 コネクト」「コネクト  」「 コネクト 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);

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

  • このエントリーをはてなブックマークに追加
  • LINEで送る

SNSでもご購読できます。

コメントを残す

*

CAPTCHA


This blog is kept spam free by WP-SpamFree.