网站制作学习网PHP→正文:循环替换与数组替换效率比较
字体:

循环替换与数组替换效率比较

PHP 2012/12/18 16:47:01  点击:不统计


在做sql注入中,有替换关键词的处理,将那些update等操作数据库的关键词进行了替换,防止sql注入,在替换使用的方法中看到了两种,一种是循环替换一种是数组进行替换,下面对两种替换进行了效率的对比。
看下面的例子
<?php
$str = "insert into  ab,casdfsae;alert test,update,delete,forasp.cn,string,script,language,bingbangbasdf,insert into  ab,casdfsae;alert test,update,delete,google,string,script,language,bingbangbasdf,insert into  ab,casdfsae;alert test,update,delete,google,string,script,str_replace,bingbangbasdf,insert into  str_replace,casdfsae;alert test,update,delete,wangzhanzhizuoxuexiwang,string,script,language,bingbangbasdf,insert into  ab,casdfsae;alert test,update,delete,google,str_replace,script,language";
 $search_key_array = array("update","insert","delete");
 $replace_key_array = array("%a%adate","%b%bsert","%c%clete");
 $begin = microtime()+time();
 $str2 = $str;
 //这里循环1万次,扩大处理时间的比例
 for($i=0;$i<10000;++$i){
  //循环式的替换
  //foreach($search_key_array as $k=>$v){
//   if(strpos($str,$v))str_replace($v,$replace_key_array[$k],$str2);      
//  }
  //数组式的替换
  str_replace($search_key_array,$replace_key_array,$str2);
  $str2 = $str;  
 }
 $end = time()+microtime();
 echo $end - $begin;
?>
采用循环式的查找替换,我们输出4次的时间
1.0.37859010696411
2.0.41898488998413
3.0.39051914215088
4.0.41148495674133
平均值大概在0.4秒
采用数组替换式的时间
1.0.2435348033905
2.0.24601316452026
3.0.21609592437744
4.0.2502121925354
平均时间在0.24秒

从实际测试状况看,数组替换比循环替换快了约 66%,所以以后要用数组替换


转www.载for网站制作学习asp必.cn究

·上一篇:php 取出多个数组共有的内容 >>    ·下一篇:thinkphp 备份类 >>
推荐文章
最新文章