基礎から解る!PHP入門講座 プログラム入門に最適な言語、PHPを学ぼう

基礎から解る!PHP入門講座

プログラム入門に最適な言語、PHPを学ぼう      

 このサイトはPHPを独習する際に作成したスクリプトを基に、プログラム言語初心者のための入門講座として作成しました。PHPは初心者に親しみやすく、解りやすいプログラム言語です。これからプログラムを学ぶ人の参考になればと思います。


正規表現とはなにか?

 正規表現という言葉からは、想像できるものがないんですね。
 初めはいったい何のことなのか、サッパリ解りませんでした。この正規表現は非常に奥が深いものなのですが、簡単に言うと入力された文字が、要求に合っているかどうかを判断するもの、ということです。

 たとえばメールアドレスを入力する欄にちゃんと@が入っているか?とかそう言ったことを判断するわけです。

8-1 メールアドレス判断

 まずはereg(パターン,文字列)と言う関数を説明します。これは文字列がパターンに合っているかどうかを判断する関数です。IFと組み合わせることで、文字列つまり入力された文字が、パターンにあっているかどうかを判断し結果を出すわけです。
 ereg("[a-z]",$data)
 これは$dataに代入された文字列に英語の小文字があるかどうかを判断しています。""の部分がパターンを現しています。$dataがこのパターンにあっていればtrueを返します。
 この場合間違えやすいのが、「英語の小文字があるかどうか」という点で「abc」はもちろんOKなのですが、「a4b5c」と他の文字が入っていてもOKだと言うことです。

 文字列を表現するパターンはさまざまあるので、例を出してを表にします。
書式(例)意味
[abcd]小文字abcdのどれか一文字がある
[a-z]小文字aからzまでのどれか一文字がある
[a-zA-Z]小文字大文字すべてのどれか一文字がある
[a-cfgk-]小文字aからcまでとfgk-のどれか一文字がある
[a-z0-9]小文字すべてと数字のどれか一文字がある
[a-z]*小文字のどれかゼロ以上ある、つまりあっても無くてもよい
[a-z]+小文字のどれか一文字以上がある
[a-z]{3}小文字のどれか3文字がある{}で文字数を指定
[a-z]{3,}小文字のどれか3文字以上ある
[a-z]{3,5}小文字のどれか3文字以上、5文字以下ある
(jpg)jpgと言う3文字の単語そのものがある
(jpg){2}jpgjpgと2回繰り返す部分がある
([a-z]+)([0-9]+)()で括ることで、swd9748 というように順序を現す
^[a-z]^先頭を表す、つまり小文字で始まると言うこと
[^a-z][]内に^があると否定を表す、つまり小文字以外がある
[a-z]|[A-Z]|はどちらか一方の意味、小文字か大文字かを表す
a.cドットは任意の一文字、afc,arc,awcなどを表す
¥(はエスケープ(や*.などは前に¥を置いて表す
 とまぁ色々と決まりがあるわけです。それではメールアドレスはどうなるかと言うと
 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となってしまうのです。
2019/1
SUN MON TUE WED THU FRI SAT
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31   


 フォクすけ©2006 Mozilla Japan



制作:基礎から解るPHP入門講座 代表:FREEZE

Copyright © 2005/2/28 flzPHP.All Rights Riserved