php不用正则采集速度探究总结



注意:下面的所有函数都没有用正则。

以上为取出第一个匹配的三个函数,实现相同的目的

复制代码 代码如下:

function str_cut($str ,$start, $end) {//取出第一个匹配,效率最高,先分割再替换
$content = strstr( $str, $start );
$content = substr( $content, strlen( $start ), strpos( $content, $end ) - strlen( $start ) );
return $content;
}
function str_cut1($str ,$start, $end) {//取出第一个匹配,效率中,直接查找替换
$x = strpos($str, $start);
return substr($str, $x+strlen($start), strpos($str, $end)-$x+strlen($end));
}

function str_cut3($content,$start,$end){//取出第一个匹配,字符串越大,速度越慢!
$my = explode($start,$content);
$my = explode($end,$my[1]);
return $my[0];
}

以下为取出所有匹配的3个函数(全部原创),实现相同的采集目的
复制代码 代码如下:

function strcut($str ,$start, $end) //先搜个数,速度中等
{
if( strpos( $str , $start ) )
{
$sum = substr_count($str,$start);

$carr = array();
for($i=0;$i<$sum;$i++){
$str = strstr( $str, $start );
$str = substr( $str, strlen($start));
$carr[] = substr( $str, 0, strpos( $str, $end ) );
}



}
return $carr;
}

function str_cut_all($str ,$start, $end,$carr=array()) //递归,运行效率最慢!
{
if( strpos( $str , $start ) )
{
$str = strstr( $str, $start );
$str = substr( $str, strlen($start));
$carr[] = substr( $str, 0, strpos( $str, $end ) );
if( strpos( $str , $start ) )
{
return str_cut_all($str ,$start, $end ,$carr );
}

}
return $carr;
}

function my_Ca($content,$start,$end){//取出所有匹配,效率最快,因为只读一次,字符串越大越明显
$m = explode($start,$content);
$a = array();
for( $i = 1;$i < count($m);$i++ )
{
$my = explode($end,$m[$i]);
$a[] = $my[0];
unset($my);
}
return $a;
}

注意my-Ca比较
如果这样写:
复制代码 代码如下:

function my_Ca($content,$start,$end){//取出所有匹配
$m = explode($start,$content);
$a = array();
$sum = count($m);
for( $i = 1;$i < $sum;$i++ )
{
$my = explode($end,$m[$i]);
$a[] = $my[0];
unset($my);
}
return $a;
}

速度又快了一些!


由上可以看出,并不是数组处理函数(explode)比字符串处理函数(substr等)慢,也不是那个比这个快,因为在匹配多个数据的时候匹配的越多数组函数的优势越大,处理字符串就象切蛋糕一样越切越小。匹配单个字符串运用切的思路去做也是一样的效果(str_cut)。关键还是在---算法!算法写的好,什么函数都是一样哦!



相关阅读:
几篇关于无限分类算法的文章
W3C建议的移动Web标记语言XHTML Basic 1.1
初谈PHP+MySQL 绝佳组合打造WEB站点
javascript过滤危险脚本方法
不错的新闻标题颜色效果" target="_blank">不错的新闻标题颜色效果
免安转MySQL服务的启动与停止方法
Ajax兴起, 传统Web框架与狼共舞
关于 .Net 开发下的分布式缓存设计
javaScript DOM方法与属性摘要
Asp.net 控件开发—数据回传
js截取函数(indexOf,join等)
用cssText属性批量操作样式技巧
List the Codec Files on a Computer
在视图中使用递归生成树状结构
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 电脑维修合同 灵魂的颜色 那个男人的谎言 抱薪救火造句 小学男生自我介绍 美好作文800字 小学四年级作文400字:“学乐”让我感到快乐 幼儿园环境创设中存在的问题及其改进策略 病橘 悠悠白沙情 初中初一作文750字:关于童话的童话 杂剧·宋上皇御断金凤钗 小学四年级作文450字:学会理财 TIME 临江仙(寿师幕) 英语老师作文300字 拓展夏令营有感 2016文学院姜小凌老师先进事迹材料 快乐即赢家 植树节几月几日? 温馨重阳节作文 为什么很多人的新年梦想最后都只是梦想? 高中高三作文1500字:绕着老师走 2015教研活动主持稿 在我心里的哪个角落里面只有你 民政行风评议社会承诺内容 我的自画像600字 游韶山作文800字 关于人生的经典句子 美丽的长城李月棋作文200字 工行贷款工资证明 关爱地球作文350字 校园明星600字 [物品]“小兔”乖乖作文300字 经典心灵句子 2011年上半年某县政府信息化工作办公室工作总结和下半年工作计划 荔园小学召开全体家长会 别样的爱作文700字 高中高一作文450字:我的好朋友葛藤飞 你也随他一起流失...... 不知道應該咋辦 雨落惆怅,青色兰花伞的身影 我和妈妈有个小约定作文450字 2010年虎年春联集锦 与你相遇,好幸运 雨之春意 表达思念亲人的诗句 我心中的那朵芬芳,静静流淌……600字 当初不该与你那么近,曾经不该与你那么好 小学六年级作文500字:难忘的一次掌声

Copyright © 2016 phpStudy |