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 相关文章推荐
表单复选框向PHP传输数据的代码
Nov 13 PHP
php 删除数组元素
Jan 16 PHP
php 随机生成10位字符代码
Mar 26 PHP
PHP 变量的定义方法
Jan 26 PHP
解析PHP实现多进程并行执行脚本
Jun 18 PHP
thinkPHP导出csv文件及用表格输出excel的方法
Dec 30 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
May 13 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
Jun 13 PHP
CI框架实现优化文件上传及多文件上传的方法
Jan 04 PHP
php输出图像的方法实例分析
Feb 16 PHP
关于php支持的协议与封装协议总结(推荐)
Nov 17 PHP
Laravel统计一段时间间隔的数据方法
Oct 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
PHP合并两个数组的两种方式的异同
2012/09/14 PHP
使用PHP接受文件并获得其后缀名的方法
2015/08/05 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
php实现的数组转xml案例分析
2019/09/28 PHP
JavaScript通过RegExp实现客户端验证处理程序
2013/05/07 Javascript
JS与C#编码解码
2013/12/03 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
2016/07/08 Javascript
JavaScript实战之带收放动画效果的导航菜单
2016/08/16 Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
2016/11/17 Javascript
js实现的简练高效拖拽功能示例
2016/12/21 Javascript
非常优秀的JS图片轮播插件Swiper的用法
2017/01/03 Javascript
使用node.js搭建服务器
2017/05/20 Javascript
原生JS写Ajax的请求函数功能
2017/12/22 Javascript
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
vuex提交state&amp;&amp;实时监听state数据的改变方法
2018/09/16 Javascript
js绘制一条直线并旋转45度
2020/08/21 Javascript
pandas中Timestamp类用法详解
2017/12/11 Python
python+opencv 读取文件夹下的所有图像并批量保存ROI的方法
2019/01/10 Python
python 动态生成变量名以及动态获取变量的变量名方法
2019/01/20 Python
Flask框架中request、请求钩子、上下文用法分析
2019/07/23 Python
通过python实现windows桌面截图代码实例
2020/01/17 Python
python如何将两张图片生成为全景图片
2020/03/05 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
python3定位并识别图片验证码实现自动登录功能
2021/01/29 Python
网络艺术零售业的先驱者:artrepublic
2017/09/26 全球购物
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
Boden英国官网:英国知名原创时装品牌
2018/11/06 全球购物
员工安全责任书范本
2014/07/24 职场文书
车贷收入证明范本
2014/09/14 职场文书
预备党员转正思想汇报
2014/09/26 职场文书
主持人开幕词
2015/01/29 职场文书
答谢酒会主持词
2015/07/02 职场文书
企业管理不到位检讨书
2019/06/27 职场文书
创业计划书之花店
2019/09/20 职场文书
各国货币符号大全
2022/02/17 杂记
JS中forEach()、map()、every()、some()和filter()的用法
2022/05/11 Javascript