A previously written php form e-mail sender, which verifies that the e-mail address format is correct by using the following method:
The code is as follows |
|
Eregi ("^[_a-z0-9-]+" (. [ _a-z0-9-]+) *@[a-z0-9_-]+. [a-z0-9_-]+.* ", $email) |
It was later discovered that an email address similar to the will. mistakenly written as, can also pass validation, such as user@126,com. After checking, it turns out that it actually only validates the user name section, so you find a tutorial on the web, which gives the following examples:
The code is as follows |
|
Eregi (' ^[_a-z0-9-]+. [ _a-z0-9-]+) *@[a-z0-9-]+ (. [ a-z0-9-]+) *$ ', $email) |
After checking, the email address user@126,com is still able to verify through it. An example was found:
The code is as follows |
|
Eregi ("^[_.0-9a-z-]+@" ([0-9a-z][0-9a-z-]+.) +[a-z]{2,3}$ ", $STR) |
This looks more reasonable because it validates the suffix name, although there are now 4 characters above the top-level domain, but only a slight modification. However, e-mail address user@xxx,com 111cn.net is still able to pass the verification, after careful examination is found to be because there is no pair. Escape caused. So make a slight change to it:
The code is as follows |
|
Eregi ("^[_.0-9a-z-]+@" ([0-9a-z][0-9a-z-]+.) +[a-z]{2,4}$) |
Although it's easier to check the user name, it seems to work better now.
Example 1
The code is as follows |
|
<?php function Is_valid_email ($email, $test _mx = False) { if (eregi ("^" [_a-z0-9-]+) (. [ _a-z0-9-]+) *@ ([a-z0-9-]+) (. [ a-z0-9-]+) * (. [ a-z]{2,4}) $ ", $email)) if ($test _mx) { List ($username, $domain) = Split ("@", $email); Return Getmxrr ($domain, $mxrecords); } Else return true; Else return false; } ?> |
Example 2 (written by oneself)
code is as follows |
&nbs P; |
Function is_valid_email_address ($email) { $qtext = ' [^//x 0d//x22//x5c//x80-//xff] '; $dtext = ' [^//x0d//x5b-//x5d//x80-//xff] '; $atom = ' [^//x00-//x20// X22//x28//x29//x2c//x2e//x3a-//x3c '. '//x3e//x40//x5b-//x5d//x7f-//xff]+ '; $quoted _pair = '// X5C[//X00-//X7F] '; $domain _literal = "//x5b ($dtext | $quoted _pair) *//x5d" &NBSP; $quoted _string = "//x22 ($qtext | $quoted _pair) *//x22 "; $domain _ref = $atom; $sub _domain =" ($domain _ref| $domain _literal) " ; $word = "($atom | $quoted _string)" &NBSP; $domain = "$sub _domain (//x2e$sub_domain) *"; $ Local_part = "$word (//x2e$word) *"; $addr _spec = "$local _part//x40$domain"; Return preg_ Match ("!^ $addr _spec$!", $email)? 1:0;&NBSP } /td> |