PHP で一般的に使用される電子メール検証ステートメントの説明
著者:Eve Cole
更新時間:2009-06-06 18:17:18
PHP をよく勉強した人なら誰でも、電子メール検証に関する次のステートメントを知っているはずだと思いますが、これを実際に理解できる人は多くありません。
<?php
if (エレギ("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[az]{2,3}$",$メール)){
echo "あなたのメールは予備検査に合格しました";
}
?>
この文では、まずエレギ関数を適用しますが、これは非常に理解しやすいです。本を探せば、次のような説明が得られます。
構文: int ereg(文字列パターン, 文字列 string, 配列 [regs]);
戻り値: 整数/配列 この関数は、パターン ルールに基づいて文字列を解析および比較します。
比較結果によって返された値は配列パラメータ regs に配置されます。regs[0] の内容は元の文字列、regs[1] はルールに準拠する最初の文字列、regs[2] は 2 番目の文字列です。ルールに準拠する文字列など。パラメータ regs を省略した場合は、単純に比較され、見つかった場合は戻り値が true になります。
理解しにくいのは、前の正規表現です: ^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[ az]{2 ,3}$
この正規表現では、「+」は前の文字列が 1 つ以上連続して出現することを意味し、「^」は次の文字列が先頭に出現する必要があることを意味し、「$」は前の文字列が最後に出現する必要があることを意味します。
「.」は「.」でもあり、「」はエスケープ文字です。「{2,3}」は、前の文字列が連続して 2 ~ 3 回出現できることを意味します。 「()」は、含まれるコンテンツがターゲット オブジェクトにも出現する必要があることを意味します。 「[_.0-9a-z-]」は、「_」、「.」、「-」に含まれる任意の文字、a ~ z の範囲の文字、および 0 ~ 9 の範囲の数字を意味します。
このようにして、この正規表現は次のように変換できます。
「次の文字は (^) で始まる必要があります。」、「文字は「_」、「.」、「-」、a ~ z の範囲の文字、0 ~ 9 の範囲の数字 ([ _.0-9a-z-])", "前の文字は少なくとも 1 回出現します (+)", @, "この文字列は、a から z の範囲に含まれる文字で構成され、0 から 9 は a で始まります。数字内の文字、その後に「-」に含まれる少なくとも 1 つの文字、a ~ z の範囲の任意の文字、0 ~ 9 の範囲の任意の数字が続き、最後に (([0-9a -z) ][0-9a-z-]+.))"、"前の文字が少なくとも 1 回出現します (+)"、"a から z までの範囲の文字が 2 ~ 3 回出現し、それで終わります ([ az] {2,3}$)」
それは複雑ですよね? それが正規表現を使用する理由です。