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(';',";
",$str);
	if(strlen($str)<100) echo $str;
	return $str;
}


 

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

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

原文地址:https://www.cnblogs.com/lein317/p/5067586.html