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查找特征字符,来的又快又好
PHP 长字符串替换操作性能(替换多换注释的代码)的更多相关文章
- 在Vi里面实现字符串的批量替换
在Vi里面实现字符串的批量替换. a. 文件内全部替换: %s#abc#def#g(用def替换文件中所有的abc) 例如把一个文本文件里面的"linuxidc.com"全部替换成 ...
- python字符串截取与替换的例子
python字符串截取与替换的多种方法 时间:2016-03-12 20:08:14来源:网络 导读:python字符串截取与替换的多种方法,以冒号分隔的字符串的截取方法,python字符串替换方法, ...
- .net mvc RazorEngine 字符串razor参数替换
在.net中有一个比较好的字符串参数替换的方案RazorEngine推荐大家看看原网站,然后做个小联系然后你就懂啦 首先呢得下载一个吧, vs中tools-> Library Paging Ma ...
- 剑指offer 1,输入一个字符串,将字符串的空格替换成%20
剑指offer 1,输入一个字符串,将字符串的空格替换成%20 function replaceSpace(str){ return str.replace(/\s/g,"% ...
- mysql 字符串 拼接 截取 替换
一. 字符串拼接 concat('asdf',str); 说明: 拼接asdf 和 str 二. 字符串截取 从左开始截取字符串 left(str, length) 说明:) as abstract ...
- 使用List把一个长字符串分解成若干个短字符串
把一个长字符串分解成若干个固定长度的短字符串,由于事先不知道长字符串的长度,以及短字符串的数量,只能使用List. public static void get_list_sbody(String s ...
- eclipse处理长字符串拼接快捷方法类
情景: 你在后台写sql文访问数据库时是不是要这样写 String sql="select a," +"b," +"c " +"f ...
- JSP-简单的练习省略显示长字符串
<%@ page contentType="text/html; charset=gb2312" %> <!-- JSP指令标签 --> <%@ pa ...
- python-原始字符串,长字符串
一 长字符串 在python中要表示跨行多行的字符串,可以使用较为简单粗暴的表达-----三引号.例如: str = ”’那时我们有梦, 关于文学, 关于爱情, 关于穿越世界的旅行. 如今我们深夜饮 ...
随机推荐
- As Easy As Possible
题目链接 题意:一个只含e, a, s, y的字符串,问[l, r]内有多少个easy序列? 题解:倍增. #include <bits/stdc++.h> using namespace ...
- 01 Developing Successful Oracle Applications
varchar2 类型定义时, 个人认为应该选择byte 类型, 即 varchar2(20), oracle 支持的最大的字符串是 varchar2(4000), 同时, 个人认为, 当你定义一个v ...
- 杨辉三角 && 鸽兔同校
杨辉三角: 用个一维数组直接模拟就行,只是 C++ 的高精度调了好久,后来发现能用 python ,于是试着写了写: dp = [] def out(L, end): for i in range(e ...
- JavaScript屏蔽Backspace键
原文:http://www.cnblogs.com/xdp-gacl/p/3785806.html 今天在IE浏览器下发现,当把使用readonly="readonly"属性将文本 ...
- OpenGL的glViewPort窗口设置函数实现分屏
之前实现过全景图片查看(OpenGL的几何变换3之内观察全景图),那么我们需要进行分屏该如何实现呢?如下图: 没错就是以前提过的glViewPort函数,废话不多说了,我直接上代码: //从这里开始进 ...
- Sublime3基础使用技巧
1.安装SideBarEnhancements插件 ctrl+shift+p —> Install Package —> 找到SideBarEnhancements 2.安装CSS调色器: ...
- 向java全台推送数据等
(1)http://www.cnblogs.com/xdp-gacl/p/3789624.html (2)VenusWebHelper 等等 public void test(){ String f ...
- Canu Quick Start(快速使用Canu)
Canu Quick Start Canu Quick Start PBcR (老版的canu) CA Canu specializes in(专门从事) assembling PacBio or O ...
- tif图片编辑利器
http://www.onlinedown.net/soft/99112.htmTIF编辑器 0.4 http://www.zjda07.cn/软件类别:国产软件/图像处理软件大小:1089KB软件授 ...
- QQ等级图标排名说明_QQ等级表,QQ最高等级(皇冠) qq到一星要5天
从2007年11月29日中午12:00开始,在不改变原有计算方式的情况下,加速QQ会员等级升级.QQ会员用户在原有通过每天在线2小时累积活跃天数来获取相应QQ等级增长的基础上,还可以根据QQ会员VIP ...