今回はPHPの正規表現の紹介です。
よく使われるパターンとともに紹介したいと思います。
PHP 正規表現
正規表現はデータが正しいかどうかを調べるときに使われます。
以前紹介したPHPで文字列を扱う関数を使っても、条件分岐と組み合わせたりして簡単なデータの確認はできましたが、正規表現を使うとより細かなデータチェックが可能になります。
文字列のマッチング preg_match()
正規表現で代表的なのが、preg_match関数です。
preg_match(/文字列パターン/, 比較対象の文字列)
これは指定した文字列のパターンと、比較対象の文字列をマッチングするものです。これにより文字列に誤りがないかなどチェックすることができます。
簡単なコードで見てみましょう。
<?php if(preg_match("/PHP/", "PHPの正規表現")){ echo "マッチした"; } else{ echo"マッチしなかった"; } ?>
ここではパターンに「PHP」、比較対象の文字列に「PHPの正規表現」を設定しました。
「PHPの正規表現」の中に「PHP」というパターンは存在するのでtrueとなります。
正規表現でよく使われるパターン
正規表現のパターンを作る際に使われる特殊な記述を紹介します。
文字クラス
[ ]で囲むことで作られるパターンを文字クラスといいます。この中に記述した文字のどれかがあればマッチします。
いくつか紹介します。
文字クラス | 意味 |
[abcde] | abcdeのいずれか1文字でマッチ |
[^abcde] | abcde以外の1文字でマッチ |
[A-Z] | 大文字アルファベットのいずれか1文字でマッチ |
[a-z] | 小文字アルファベットのいずれか1文字でマッチ |
[A-Za-z] | 大文字、小文字アルファベット1文字でマッチ |
[0-9] | 数字1文字でマッチ |
[A-Za-z0-9] | 大文字、小文字アルファベット、数字のいずれか1文字でマッチ |
[0-9][a-z] | 数字1文字の後に、小文字アルファベット1文字でマッチ |
量指定子
上記の文字クラスは1文字ずつ調べるものなので、2文字以上の文字列をチェックするには文字クラスを繰り返し記述する必要があります。
そんなときに簡単に記述できるのが量指定子です。
量指定子 | 意味 |
* | 0回以上繰り返し |
+ | 1回以上繰り返し |
? | 0回または1回の繰り返し |
{a} | a回の繰り返し |
{a,} | a回以上の繰り返し |
{a,b} | a~b回の繰り返し |
実際に文字クラスと量指定子を使った正規表現を見てみましょう。
分かりやすいように文字列のパターンに当たる部分のみ記述していきます。
これは携帯電話の番号を表しています。
/^[0-9]{3}-[0-9]{4}-[0-9]{4}$/
「^」と「$」はそれぞれ先頭と末尾を表しています。文字クラス内で使われる「^」とは意味が変わるので注意が必要です。
携帯番号は「○○○-○○○○-○○○○」の数字の並びで表されます。
ここでは文字クラス「[0-9]」で数字を指定し、量指定子「{3}」「{4}」で繰り返す回数を指定しています。
文字列のパターンはこんな感じで作られます。
フォームで扱うデータなんかは、ある程度パターンが決まっています。パーターンを作って確認することで、フォーム等で送信されてきたデータも安全に処理することが出来るようになります。
最後に
はじめは電話番号、住所、メールアドレスのような、よくある字列のパターンを見て慣れていくのがいいと思います。