この記事では、PHPでメールを定期的に検証する方法について説明します。皆さんの参考に共有してください。詳細は以下の通りです
?
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
関数 validateEmail($email) { $isValid = true; $atIndex = strrpos($email, "@"); if (is_bool($atIndex) && !$atIndex) { $isValid = false; } その他 { $domain = substr($email, $atIndex+1); $local = substr($email, 0, $atIndex); $localLen = strlen($local); $domainLen = strlen($domain); if ($localLen 64) { // ローカル パーツの長さを超えました $isValid = false; } else if ($domainLen 255) { // ドメイン部分の長さを超えました $isValid = false; } else if ($local[0] == '.' || $local[$localLen-1] == '.') { // ローカル部分は '.' で始まるか終わります $isValid = false; } else if (preg_match('/\.\./', $local)) { // ローカル部分には 2 つの連続したドットがあります $isValid = false; } else if (!preg_match('/^[A-Za-z0-9\-\.]+$/', $domain)) { // ドメイン部分では文字が無効です $isValid = false; } else if (preg_match('/\.\./', $domain)) { //ドメイン部分には 2 つの連続したドットがあります $isValid = false; } else if(!preg_match('/^(\\.|[A-Za-z0-9!#%&`_=\/$'*+?^{}|~.-])+$/' 、str_replace("\\","",$local))) { // 文字はローカル部分では無効です // ローカル部分は引用 if (!preg_match('/^"(\\"|[^"])+"$/', str_replace("\\","",$local))) { $isValid = false; } } if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A"))) { // DNS にドメインが見つかりません $isValid = false; } } $isValid を返す; } ?> |
この記事が皆様の PHP プログラミング設計に役立つことを願っています。