我寫了一個簡單的函數來檢查我發送的字符串「應該」是否有效。preg_match如何正確工作?
// this works without problems
function validate_email ($value) {
return preg_match ("/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/", $value);
}
// this doesn't work
function validate_string ($value) {
return preg_match ("([^<>?=/\]+)", $value);
}
第一功能效果很好,如果我發送電子郵件至validate_email
我已經習慣了保持有效還給我1
或0
如果不是。
validate_string
應該對每種類型的字符串都做同樣的事情,但不要使用? = < >/\
。如果我檢查函數,它在任何情況下都會返回1,爲什麼?
validate_string ("tonino"); // return 1 ok
validate_string ("ton\ino\"); // return 1 why?
validate_string ("ton?asd=3"); // return 1 why?
的^
焦內([^<>?=/]+)
應該是指不能(或不?)
該電子郵件檢查不起作用,沒有問題。對於初學者,它無法匹配[email protected]。 – Quentin 2010-01-25 14:39:09
是的,它驗證擴展名不超過4個字符的地址,是否是.museum有效的擴展名? – vitto 2010-01-25 15:39:17
它與「.mobi」或「.xn - 0zwm56d」這樣的名稱一起: http://en.wikipedia.org/wiki/List_of_Internet_top-level_domains – 2010-01-25 16:01:05