PHP正規表現の使い方まとめ
フォームを使うことが多いPHPでは、正規表現はよく使用されることがあるため基本理解を5分で理解しよう。 無理だけど... 電話番号を判定したり、メールアドレスが正しいか確認したり、YouTubeのURLからapiデータを引っ張ってきたりと正規表現は様々なところで活躍する。
正規表現(Regular Expression)とは?
まずは、正規表現そのものについて簡単にご紹介しよう。PHPではフォームのチェックやインポートデータの確認など、ユーザがWebから入力した何かのチェックに使うことが多い。 この文章のこの部分だけ抜き出したいというとき 例)東京情報大学 〒265-8501 千葉県千葉市若葉区御成台4-1 東京大学 〒113-8654 東京都文京区本郷7丁目3−1 この中の郵便番号のみを抜き出したい時などは 「郵便番号って〒があって、その後に3つの数字があって、次に-が書いてあって、その後に4つの数字がある部分だよね」 これをプログラムが判断できるように下のが正規表現です。
正規表現の基本的なしくみ
文字列に対する正規表現パターンマッチは、下記のように動作する。
- ステップ1:文字列の先頭を調べる。
- ステップ2:次にその位置でマッチしなかった場合は、次の文字に移動して再度調べる
- ステップ3:途中でマッチした場合は、その位置でマッチング作業を終える
- ステップ4:マッチするものがなければ、文字列を最後まで調べて終わる
正規表現の例
php関数はpreg_matchを使う。
<?php echo preg_match("/c[aeiou]t/", "I love my cat"); echo preg_match("/c[aeiou]t/", "I love my dog"); ?>
preg_matchは第一引数の正規表現と第二引数のテキストが一致していたら、tureを返してくれる関数です。
/c[aeiou]t/
が正規表現にあたる。 これは「1文字目がcで、2文字目がa,e,i,o,uのどれかで、3文字目がt」の文章があるかどうか?という正規表現だ。「cat」はまさしくそれにあたるが、"I love my dog"にはそれに当たる文字が無い。