PHP 长字符串替换操作性能(替换多换注释的代码)

因为写一个css合并工具,去掉注释时,发现正则表达式很难写,最后,还是用php来实现吧,但是一不小心写出来的代码居然报内存超出可用的128m!!

 

原因是因为我找到/*和*/之后

 

$str=substr($str,0,$pos_left).substr($str,$pos_right+2); //最后报错在这里!

后来改成了:

function replaceNote($str){
	$pos0 = strpos($str,'/*');
	while($pos0!==false){
		$pos1 = strpos($str,'*/');
		if($pos1===false){
			$pos0+=2;
		}else{
			$rp = substr($str,$pos0,$pos1-$pos0+2);
			$str = str_replace($rp,'',$str);
			$pos0 = strpos($str,'/*');
		}
	}
	$str = str_replace(';',";\r\n",$str);
	if(strlen($str)<100) echo $str;
	return $str;
}


 

速度相当快,比正则表达式快,而且效果好!!

依据我个人10来年的经验来看,正则表达式不适合太复杂的场景,比如你的新闻小偷,用正则很难实现理想的效果,还是用strpos查找特征字符,来的又快又好

 

转载于:https://www.cnblogs.com/lein317/p/5067586.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值