PHPでフォームから入力された文字列が全角・半角スペースのみの場合のチェック

php

検索すれば、沢山でてくると思うけど、よくフォームで入力した値をphpでチェック(バリデーション)をする時に、スペースや半角スペースが入力されていた場合は、処理をしないようにする場合がある。それをメモる。

正規表現を使ってチェックする

正規表現を使用してスペースと半角スペースがあった場合はif文で処理する方法。下記は、「始まりが半角スペースもしくは全角スペースが一回以上出現して終わっている」つまり半角スペースか全角スペースしか記入されていない状態を指す。

$str=$_GET["text"]; //入力されたテキスト

$pattern="^(\s| )+$";  //正規表現のパターン
if(!mb_ereg_match($pattern,){ //if文とmb_ereg_matchでチェック
   //ここに一致しなかった場合(入力されていない場合の処理)
}

上記は「\s」は、空白文字を表す正規表現です。空白文字とは…半角スペース、タブ文字のことをさしてあり、その次の「|」は「or」と同じ意味です。
次が分りずらいが、全角スペースを入力している。「(\s|全角スペースを入力)」その次の「+」は一回以上あった場合という意味。

mb_ereg_matchによるチェック

mb_ereg_matchは、「マルチバイト文字列が正規表現に一致するか調べる」という関数です。一致する(スペースが入力された場合)はtureを返す。
上記の例だと、スペースが入力されなかった場合に何かの処理をするようにしている。*if文に「!」の否定形を使っているので。

まぁやり方はこれだけじゃないと思うが、とりあえずスペースは弾くことが出来たので良しとする。

参考サイト:PHPマニュアル「mb_ereg_match: マルチバイト文字列が正規表現に一致するか調べる