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 相关文章推荐
Get或Post提交值的非法数据处理
Oct 09 PHP
新安装的MySQL数据库需要注意的安全知识
Jul 30 PHP
PHP函数preg_match_all正则表达式的基本使用详细解析
Aug 31 PHP
php 批量替换程序的具体实现代码
Oct 04 PHP
浅析ThinkPHP中execute和query方法的区别
Jun 13 PHP
destoon后台网站设置变成空白的解决方法
Jun 21 PHP
Thinkphp实现MySQL读写分离操作示例
Jun 25 PHP
php中str_pad()函数用法分析
Mar 28 PHP
Laravel框架实现超简单的分页效果示例
Feb 08 PHP
浅谈laravel框架与thinkPHP框架的区别
Oct 23 PHP
PHP序列化和反序列化深度剖析实例讲解
Dec 29 PHP
PHP7修改的函数
Mar 09 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
40年前的这部特摄片恐龙特级克塞号80后的共同回忆
2020/03/08 日漫
Terran建筑一览
2020/03/14 星际争霸
颠覆常识!无色透明的咖啡诞生了(中日双语)
2021/03/03 咖啡文化
从PHP的源码中深入了解stdClass类
2014/04/18 PHP
php集成动态口令认证
2016/07/21 PHP
js中巧用cssText属性批量操作样式
2011/03/13 Javascript
网页广告中JS代码的信息监听示例
2014/04/02 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
Node.js读写文件之批量替换图片的实现方法
2016/09/07 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
2016/09/20 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
Vue.js在使用中的一些注意知识点
2017/04/29 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
2017/05/18 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
2017/07/24 Javascript
vue使用jsonp抓取qq音乐数据的方法
2018/06/21 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
原生js实现点击轮播切换图片
2020/02/11 Javascript
Vue发布订阅模式实现过程图解
2020/04/30 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
小程序自动化测试的示例代码
2020/08/11 Javascript
[45:15]Optic vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Python字符串处理实例详解
2017/05/18 Python
python将unicode转为str的方法
2017/06/21 Python
python数据预处理之将类别数据转换为数值的方法
2017/07/05 Python
python/golang实现循环链表的示例代码
2020/09/14 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
细说CSS3中的选择符
2008/10/17 HTML / CSS
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
数控专业毕业生求职信
2014/06/12 职场文书
信息与计算机科学职业规划范文:成为一艘有方向的船
2014/09/11 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
python实现简易名片管理系统
2021/04/11 Python
详解PHP用mb_string处理windows中文字符
2021/05/26 PHP
JavaScript高级程序设计之变量与作用域
2021/11/17 Javascript
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript