- 论坛徽章:
- 1
|
原帖由 qmhball 于 2007-8-30 18:32 发表 ![]()
楼上两位说的没错 正则的确可以 不过我总觉得如果能不用的话尽量不用。因为正则的效率不高。
不过,如果没有更好的办法,也只能正则了,呵呵。
看你需要效率到什么地步了:
- <?php
- // --------------------------------------------------------------------------
- // File name : 文件名称.php
- // Description : 文件说明
- // Requirement : PHP4/5 ([url]http://www.php.net[/url])
- //
- // Copyright(C), HonestQiao, 2007, All Rights Reserved.
- //
- // Author: HonestQiao ([email]honestqiao@hotmail.com[/email])
- //
- // --------------------------------------------------------------------------
- function microtime_float($t=0)
- {
- list($usec, $sec) = explode(" ", $t==0?microtime():$t);
- return ((float)$usec + (float)$sec);
- }
- function test_1(&$number)
- {
- $t1=$t2=$t_delay=0.0;
- $t0 = microtime();
- for($i=0;$i<100000;$i++)preg_match('/^\d+$/',$number);
- $t1 = microtime();
- $t_delay = microtime_float($t1)-microtime_float($t0);
- return $t_delay;
- }
- function test_2(&$number)
- {
- $t1=$t2=$t_delay=0.0;
- $t0 = microtime();
- for($i=0;$i<100000;$i++)is_int($number);
- $t1 = microtime();
- $t_delay = microtime_float($t1)-microtime_float($t0);
- return $t_delay;
- }
- $td = array();
- $number = 123;
- $type=gettype($number);
- for($i=0; $i<10; $i++){
- $td[$i] = test_1(&$number);
- printf("%f\n",$td[$i]);
- }
- printf("regexp:%s:%f\n\n\n",$type,array_sum($td)/10);
- unset($td);
- unset($number);
- $td = array();
- $number = 123;
- $type=gettype($number);
- for($i=0; $i<10; $i++){
- $td[$i] = test_2(&$number);
- printf("%f\n",$td[$i]);
- }
- printf("%s:%f\n\n\n",$type,array_sum($td)/10);
- unset($td);
- unset($number);
- $td = array();
- $number = "123";
- $type=gettype($number);
- for($i=0; $i<10; $i++){
- $td[$i] = test_1(&$number);
- printf("%f\n",$td[$i]);
- }
- printf("regexp:%s:%f\n\n\n",$type,array_sum($td)/10);
- unset($td);
- unset($number);
- $td = array();
- $number = "123";
- $type=gettype($number);
- for($i=0; $i<10; $i++){
- $td[$i] = test_2(&$number);
- printf("%f\n",$td[$i]);
- }
- printf("%s:%f\n\n\n",$type,array_sum($td)/10);
- unset($td);
- unset($number);
- ?>
- ---------- PHP代码调试(CLI) ----------
- Content-type: text/html
- X-Powered-By: PHP/4.4.0
- 0.301302
- 0.306375
- 0.301272
- 0.301433
- 0.313819
- 0.310652
- 0.302300
- 0.295267
- 0.329107
- 0.344550
- regexp:integer:0.310608
- 0.097716
- 0.113663
- 0.145151
- 0.102788
- 0.102264
- 0.099768
- 0.154630
- 0.158320
- 0.171499
- 0.140598
- integer:0.128640
- 0.296153
- 0.261951
- 0.266966
- 0.269553
- 0.280425
- 0.261840
- 0.257834
- 0.262688
- 0.308118
- 0.291096
- regexp:string:0.275662
- 0.129914
- 0.149462
- 0.129195
- 0.119718
- 0.126575
- 0.119233
- 0.132560
- 0.122826
- 0.122475
- 0.120120
- string:0.127208
- 输出完成 (耗时 8 秒) - 正常终止
复制代码
你可以自己运行一下子。 |
|