家园首页 Php4手册 我的相册 家园下载 个人文集 给我留言
我形我塑,网络相册,www.5x54.com 相册 相册 心情相册,少女相册 免费申请,我形我塑免费相册
 家园 个人文集   http://www.5x54.com
 


preg_replace与ereg_replace那个效率更高


作者:网上收集    点击: 1310

  编程序(%$$725#^67)心情家园www.bbsdiy.net,总有一种感觉(%$$725#^67)心情家园www.bbsdiy.net,去年的程序(%$$725#^67)心情家园www.bbsdiy.net,到了今年(%$$725#^67)心情家园www.bbsdiy.net,总感觉慢了好多(%$$725#^67)心情家园www.bbsdiy.net,应该这就是优化所在吧(%$$725#^67)心情家园www.bbsdiy.net,自己的知识更深了(%$$725#^67)心情家园www.bbsdiy.net,技术也在更新(%$$725#^67)心情家园www.bbsdiy.net,所以每过一段时间(%$$725#^67)心情家园www.bbsdiy.net,再读读您写的程序(%$$725#^67)心情家园www.bbsdiy.net,看有没有可以优化的地方(%$$725#^67)心情家园www.bbsdiy.net,这是一个程序员应该做的行动。preg_replace()是Perl内置的一种文字匹配模式(%$$725#^67)心情家园www.bbsdiy.net,不过用起来一些参数会比ereg_relace()复杂一些(%$$725#^67)心情家园www.bbsdiy.net,实际的项目运用中(%$$725#^67)心情家园www.bbsdiy.net,用ereg的人还是不少(%$$725#^67)心情家园www.bbsdiy.net,近日我写了一个获取HTML中的文本的函数(%$$725#^67)心情家园www.bbsdiy.net,发现preg_replace()居然比ereg_replace()快了近一倍(%$$725#^67)心情家园www.bbsdiy.net,两个函数如下:  (%$$725#^67)心情家园www.bbsdiy.net
(%$$725#^67)心情家园www.bbsdiy.net
用preg_replace()  (%$$725#^67)心情家园www.bbsdiy.net
引用代码: function  GetHtmlText($str)
{
  
$str  =  preg_replace("/<sty(.*)\/style>|<scr(.*)\/script>|<!--(.*)-->/isU","",$str);
  
$alltext  =  "";
  
$start  =  1;
  for(
$i=0;$i<strlen($str);$i++){
    if(
$start==0  &&  $str[$i]==">")  $start  =  1;
    else  if(
$start==1){
    if(
$str[$i]=="<"){  $start  =  0;  $alltext  .=  "  ";  }
    else  if(
ord($str[$i])>32)  $alltext  .=  $str[$i];
    }
  }
  
$alltext  =  preg_replace("/&([^;&]*)(;|&)/","  ",$alltext);
  
$alltext  =  preg_replace("/ {1,}/","  ",$alltext);
  
$alltext  =  preg_replace("/  {1,}/","  ",$alltext);
  return  
$alltext;
}
  (%$$725#^67)心情家园www.bbsdiy.net
(%$$725#^67)心情家园www.bbsdiy.net
(%$$725#^67)心情家园www.bbsdiy.net
用ereg_replace() (%$$725#^67)心情家园www.bbsdiy.net
引用代码: function  GetHtmlText($str)
{
  
$str  =  eregi_replace("<sty(.*)/style>|<scr(.*)/script>|<!--(.*)-->","",$str);
  
$alltext  =  "";
  
$start  =  1;
  for(
$i=0;$i<strlen($str);$i++){
    if(
$start==0  &&  $str[$i]==">")  $start  =  1;
    else  if(
$start==1){
    if(
$str[$i]=="<"){  $start  =  0;  $alltext  .=  "  ";  }
    else  if(
ord($str[$i])>32)  $alltext  .=  $str[$i];
    }
  }
  
$alltext  =  ereg_replace("&([^;&]*)(;|&)","  ",$alltext);
  
$alltext  =  ereg_replace(" {1,}","  ",$alltext);
  
$alltext  =  ereg_replace("  {1,}","  ",$alltext);
  return  
$alltext;
}
  (%$$725#^67)心情家园www.bbsdiy.net
(%$$725#^67)心情家园www.bbsdiy.net
(%$$725#^67)心情家园www.bbsdiy.net
  经过多次测试对比(%$$725#^67)心情家园www.bbsdiy.net,用preg_replace()的函数普遍在 0.08-0.12秒之间(%$$725#^67)心情家园www.bbsdiy.net,用ereg_replace()的函数却去到0.35-0.38秒之间(%$$725#^67)心情家园www.bbsdiy.net,测试的网页为百度的主页(%$$725#^67)心情家园www.bbsdiy.net,我的系统是图拉丁 1.1G的CPU(%$$725#^67)心情家园www.bbsdiy.net,384M的内存。 (%$$725#^67)心情家园www.bbsdiy.net
(%$$725#^67)心情家园www.bbsdiy.net
  如果你的程序中还有使用ereg处理较长文本的(%$$725#^67)心情家园www.bbsdiy.net,建议马上更改过来。 (%$$725#^67)心情家园www.bbsdiy.net

收藏此文章     打印  更新     编辑此文章    『关闭窗口』