|
查看: 678|回复: 2
|
php ereg()
[复制链接]
|
|
|
发表于 12-11-2008 08:44 AM
|
显示全部楼层
你的EREG用得有点不对。
应该是类似以下 (只是随手写的Example, 没有经过PHP执行, 不确保会Work)
ereg("^([0-9A-Za-z_])+@([a-zA-Z0-9\-])+.+([a-zA-Z0-9\-\.])+$",$email);
第一组是说只接受大小写的A-Z,0到9和_, 放+的意思是说最少有一个才成立
@放在外面代表着在这之间至少要有@才成立。
第二组代表着Domain的前半段,可能是Subdomain或者Main Domain,没有dot。
然后加入一个.
之后就是Domain的Extension或Domain。
这个还有一点点不完美的地方, 你自己测试看看然后修改吧!
有错请各位高手纠正 |
|
|
|
|
|
|
|
|
|
|
我打算写一个 email的
youremail123abc@com.my
限定 英文 大小写 和数字 _ 的符号
ereg("[^ A-Z a-z $ , _ 0-9 @ *$ ].$email"
但是不可以 我还是不太会用ereg 来做判断 |
|
|
|
|
|
|
|
|
|
|
发表于 12-11-2008 10:38 AM
|
显示全部楼层
你可以用- filter_var($email, FILTER_VALIDATE_EMAIL);
复制代码 或者- preg_match("/^[^@ ]+@[^@ ]+\.[^@ ]+$/", $email);
复制代码 我做了BENCHMARK- $starttime = explode(' ', microtime());
- $starttime = $starttime[1] + $starttime[0];
- for ($num = 0; $num < 1000; $num++)
- {
- filter_var($email, FILTER_VALIDATE_EMAIL);
- }
- $endtime = explode(' ', microtime());
- $endtime = $endtime[1] + $endtime[0];
复制代码 OUTPUT TIME: 0.0191738605499- $starttime = explode(' ', microtime());
- $starttime = $starttime[1] + $starttime[0];
- for ($num = 0; $num < 1000; $num++)
- {
- preg_match("/^[^@ ]+@[^@ ]+\.[^@ ]+$/", $email);
- }
- $endtime = explode(' ', microtime());
- $endtime = $endtime[1] + $endtime[0];
复制代码 OUTPUT TIME: 0.00431489944458
PHP FILTER 虽然方便,但是 preg_match 明显比较快。 |
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|