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


Posted in PHP onMarch 24, 2008

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

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

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)。关键还是在---算法!算法写的好,什么函数都是一样哦!

PHP 相关文章推荐
通过ODBC连接的SQL SERVER实例
Oct 09 PHP
社区(php&amp;&amp;mysql)五
Oct 09 PHP
PHP4实际应用经验篇(9)
Oct 09 PHP
mysq GBKl乱码
Nov 28 PHP
实现 win2003 下 mysql 数据库每天自动备份
Dec 06 PHP
PHP简洁函数小结
Aug 12 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
May 27 PHP
Yii数据读取与跳转参数传递用法实例分析
Jul 12 PHP
laravel5.6实现数值转换
Oct 23 PHP
使用PHP开发留言板功能
Nov 19 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
Jun 02 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
Nov 10 PHP
php木马攻击防御之道
Mar 24 #PHP
php入门小知识
Mar 24 #PHP
PHP 实例化类的一点摘记
Mar 23 #PHP
深思 PHP 数组遍历的差异(array_diff 的实现)
Mar 23 #PHP
附件名前加网站名
Mar 23 #PHP
由php if 想到的些问题
Mar 22 #PHP
php实现mysql数据库备份类
Mar 20 #PHP
You might like
php中如何同时使用session和cookie来保存用户登录信息
2013/07/05 PHP
本地计算机无法启动Apache故障处理
2014/08/08 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
2016/11/07 PHP
js几个验证函数代码
2010/03/25 Javascript
JQuery在页面中添加和除移DOM示例代码
2013/06/24 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2015/04/01 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
2017/02/18 Javascript
NodeJS测试框架mocha入门教程
2017/03/28 NodeJs
webpack配置的最佳实践分享
2017/04/21 Javascript
js微信分享实现代码
2020/10/11 Javascript
纯js实现画一棵树的示例
2017/09/05 Javascript
vue 使用 sortable 实现 el-table 拖拽排序功能
2020/12/26 Vue.js
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
详解C++编程中一元运算符的重载
2016/01/19 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
Python中生成器和迭代器的区别详解
2018/02/10 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
python+influxdb+shell编写区域网络状况表
2018/07/27 Python
python去除拼音声调字母,替换为字母的方法
2018/11/28 Python
Python学习笔记之Break和Continue用法分析
2019/08/14 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
Python库安装速度过慢解决方案
2020/07/14 Python
利用html5的websocket实现websocket聊天室
2013/12/12 HTML / CSS
口腔医学技术应届生求职信
2013/11/09 职场文书
员工培训邀请函
2014/01/11 职场文书
学生会部长竞聘书
2014/03/31 职场文书
大学生个人年度总结范文
2015/02/15 职场文书
停电放假通知
2015/04/14 职场文书
十二生肖观后感
2015/06/12 职场文书
2015年暑期实践报告范文
2015/07/13 职场文书
保外就医申请书范文
2015/08/06 职场文书
学者《孟子》名人名言
2019/08/09 职场文书
Redisson实现Redis分布式锁的几种方式
2021/08/07 Redis
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript
Python Pandas 删除列操作
2022/03/16 Python