サイト移転のお知らせ ⇒ 基礎から解る!PHP入門講座当サイトはついに移転することになりしました。新URLは
http://www.flzphp.com/ です。
今後ともPHP入門講座を宜しくお願いします。 PHP でこんなことをしよう正規表現
正規表現という言葉からは、想像できるものがないんですね。
初めはいったい何のことなのか、サッパリ解りませんでした。この正規表現は非常に奥が深いものなのですが、簡単に言うと入力された文字が、要求に合っているかどうかを判断するもの、ということです。 たとえばメールアドレスを入力する欄にちゃんと@が入っているか?とかそう言ったことを判断するわけです。 メールアドレス判断
まずはereg(パターン,文字列)と言う関数を説明します。これは文字列がパターンに合っているかどうかを判断する関数です。IFと組み合わせることで、文字列つまり入力された文字が、パターンにあっているかどうかを判断し結果を出すわけです。
ereg("[a-z]",$data) これは$dataに代入された文字列に英語の小文字があるかどうかを判断しています。""の部分がパターンを現しています。$dataがこのパターンにあっていればtrueを返します。 この場合間違えやすいのが、「英語の小文字があるかどうか」という点で「abc」はもちろんOKなのですが、「a4b5c」と他の文字が入っていてもOKだと言うことです。 文字列を表現するパターンはさまざまあるので、例を出してを表にします。
とまぁ色々と決まりがあるわけです。それではメールアドレスはどうなるかと言うと ereg("(^[a-z]+[a-z0-9_-]+)@[a-z]+\.[a-z]{2}\.[a-z]+",$data) これで、小文字で始まり、次に小文字数字記号がきて、@、後は小文字、但し2番目は2文字と言うパターンができるわけです。.の前には\がつけられています。.は任意の一文字を現す記号なので、そのままではドットマークと認識しません。そこで\を前において実際のドットであること示しています。 注:この形式に当てはまらないメールアドレスもあるので、実用はできません。
★正規表現の落とし穴
そんな大げさなモノではないのですが、私は何度かミスってしまったことがあります。正規表現は、それがあるかどうかを判断するものであってそれそのものではないのです。 例えば「abc」と言う文字があるかどうかを正規表現でチェックする場合、「abc」はもちろんOKな訳ですが、「abcd」もOKなのです。 パスワードを数字4文字にしたい時、正規表現では[0-9]{4}でいいのですが、これでは「12345」でもOKなのです。つまり4文字あればいい訳で、5文字以上でもOKなのです。 この場合は文字数を数え、4文字でなければならないと言う規制を加えなければ、5文字以上でもOKとなってしまうのです。
※当サイトにて使用されている写真・文章はすべて 許可なく使用することを禁止いたします。
|
|