php中檢查email完整性
<?php if (eregi('^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]$',$email)) { echo '您的 E-Mail 通過初步檢查'; } ?>在這句話里,首先是應用了一個eregi函數,這個函數還算好理解。隨便找本書,就能給你一段解釋:; 語法: int ereg(string pattern, string string, array [regs])返回值: 整數/數組; 本函數以 pattern 的規則來解析比對字符串 string。; 比對結果返回的值放在數組參數 regs 之中,regs[0] 內容就是原字符串 string、regs[1] 為第一個合乎規則的字符串、regs[2] 就是第二個合乎規則的字符串,余類推。若省略參數 regs,則只是單純地比對,找到則返回值為 true。;
而不太好理解的就是前面的這段正則表達式了:^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]$; 在這段正則表達式中,'+'表示前面的字符串連續出現一個或多個;'^'表示下一個字符串必須出現在開頭,'$'表示前一個字符串必須出現在結尾;; '.'也就是'.',這里''是轉義符;''表示前面的字符串可以連續出現2-3次。'()'表示包含的內容必須同時出現在目標對象中。'[_.0-9a-z-]'表示包含在'_'、'.'、'-'、從a到z范圍內的字母、從0到9范圍內的數字中的任意字符;; 這樣一來,這個正則表達式可以這樣翻譯:; '下面的字符必須在開頭(^)'、'該字符必須包含在'_'、'.'、'-'、從a到z范圍內的字母、從0到9范圍內的數字中([_.0-9a-z-])'、'前面這個字符至少出現一次(+)'、@、'該字符串由一個包含在從a到z范圍內的一個字母、從0到9范圍內的數字中的字符開頭,后面跟至少一個包含在'-'、從a到z范圍內任何一個字母、從0到9范圍內任何一個數字中的字符,最后以.結束(([0-9a-z][0-9a-z-]+.))'、'前面這個字符至少出現一次(+)'、'從a到z范圍內的字母出現2-3次,并以它結束([a-z]$)'; 很繁雜是吧,對了,正因為這樣,人們才使用正則表達式。;
