最近フロントエンドの記事が多かったため、サーバー側のプログラム処理について書きます。
フォームから入力されたテキストをプログラムの処理に渡す前に、不要なスペースを取り除いておかないと、ユーザーが意図した動きをしないことがあります。
「 コネクト」「コネクト 」「 コネクト 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);
いずれかの方法で全角スペースも取り除くことができます。
コメント