Home  >  Article  >  Backend Development  >  Examples of php regular verification of email addresses and extraction of emails from content

Examples of php regular verification of email addresses and extraction of emails from content

WBOY
WBOYOriginal
2016-07-25 08:59:071078browse
  1. if (ereg(“/^[a-z]([a-z0-9]*[-_.]?[a-z0-9]+)*@([a- z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?$/i; ”,$ email)){
  2. echo “Your email address is correct!”;}
  3. else{
  4. echo “Please try again!”;
  5. }
  6. ?>
Copy the code

Introduced below, use PHP regular matching domain name method.

We know that the international domain name format is as follows: The domain name is composed of any combination of specific character sets, English letters, numbers and "-" (i.e. hyphens or minus signs) in various countries. However, "-" cannot be included at the beginning or end, and "-" cannot appear continuously. Letters in domain names are not case-sensitive. The domain name can be up to 60 bytes long (including suffixes .com, .net, .org, etc.).

/^[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0- 9]+)+[.][a-z]{2,3}([.][a-z]{2})?$/i; /content/i forms a case-insensitive regular expression; ^ match starts $ End of match [a-z] E-Mail prefix must start with an English letter ([a-z0-9]*[-_]?[a-z0-9]+)* matches _a_2, aaa11, _1_a_2, but does not match a1_, aaff_33a_, a__aa. If it is a null character, it will also match , * means 0 or more. * represents 0 or more preceding characters. [a-z0-9]* matches 0 or more English letters or numbers [-_]? Matches 0 or 1 "-", because "-" cannot appear consecutively [a-z0-9]+ matches 1 or more English letters or numbers, because "-" cannot be used as the end @ There must be one @ ([a-z0-9]*[-_]?[a-z0-9]+)+ see above ([a-z0-9]*[-_]?[a-z0-9]+)* Explanation, but it cannot be empty, + means one or more. [.] Treat special characters (.) as normal characters [a-z]{2,3} matches 2 to 3 English letters, usually com or net, etc. ([.][a-z]{2})? Matches 0 or 1 [.][a-z]{2} (such as .cn, etc.) I don’t know if the last part of .com.cn is usually two digits If not, please change {2} to {starting word count, ending word count}

2. Extract the email in the string:

  1. function getEmail($str) {
  2. $pattern = "/([a-z0-9]*[-_.]?[a-z0-9]+)*@ ([a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?/i" ;
  3. preg_match_all($pattern,$str,$emailArr);
  4. return $emailArr[0];
  5. }
  6. $emailstr = "9999@qq.com.cnIf you are not in Mivi, just open the iid mailing list: fuyongjie@163 .com and hh@qq.com;.;;,fuyongjie.100@yahoo.com,fu-1999@sina.com";
  7. $emailArr = getEmail($emailstr);
  8. echo "
    ";</li>
    <li> print_r($emailArr);</li>
    <li>echo "
    ";
  9. ?>
Copy code

Output result:

  1. Array
  2. (
  3. [0] => 9999@qq.com.cn
  4. [1] => fuyongjie@163.com
  5. [2] => hh@qq.com
  6. [3 ] => fuyongjie.100@yahoo.com
  7. [4] => fu-1999@sina.com
  8. )
Copy code

3, comparison: the first one is not included in the regular expression in the second one ^and$;

Let’s introduce these, I hope it will be helpful for everyone to learn PHP regular rules. Programmer's Home, I wish you all the best in your studies and progress.



Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn