因为写一个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查找特征字符,来的又快又好

 

posted on 2013-10-12 20:48  老游条  阅读(326)  评论(0编辑  收藏  举报