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 相关文章推荐
如何将一个表单同时提交到两个地方处理
Oct 09 PHP
落伍首发 php+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
Dec 16 PHP
测试您的 PHP 水平的题目
May 30 PHP
PHP 程序员应该使用的10个组件
Oct 31 PHP
深入PHP变量存储的详解
Jun 13 PHP
百度站点地图(百度sitemap)生成方法分享
Jan 09 PHP
php中Y2K38的漏洞解决方法实例分析
Sep 22 PHP
php基于GD库画五星红旗的方法
Feb 24 PHP
php使用ffmpeg获取视频信息并截图的实现方法
May 03 PHP
laravel5创建service provider和facade的方法详解
Jul 26 PHP
如何打开php的gd2库
Feb 09 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
Nov 26 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
linux下实现定时执行php脚本
2015/02/13 PHP
php实现简单的上传进度条
2015/11/17 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
2015/12/10 PHP
PHP实现验证码校验功能
2017/11/16 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
2018/05/31 PHP
JavaScript下利用fso判断文件是否存在的代码
2010/12/11 Javascript
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
2012/01/15 Javascript
javascript中input中readonly和disabled区别介绍
2012/10/23 Javascript
怎么选择Javascript框架(Javascript Framework)
2013/11/22 Javascript
javaScript如何处理从java后台返回的list
2014/04/24 Javascript
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
javascript检测两个数组是否相似
2015/05/19 Javascript
uploadify多文件上传参数设置技巧
2015/11/16 Javascript
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
2016/07/09 Javascript
详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON())
2016/08/15 Javascript
javascript实现延时显示提示框效果
2017/06/01 Javascript
JavaScript操作文件_动力节点Java学院整理
2017/06/30 Javascript
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
Python实现个人微信号自动监控告警的示例
2019/07/03 Python
python监控进程状态,记录重启时间及进程号的实例
2019/07/15 Python
Python csv模块使用方法代码实例
2019/08/29 Python
python SocketServer源码深入解读
2019/09/17 Python
解决Python中报错TypeError: must be str, not bytes问题
2020/04/07 Python
tensorflow安装成功import tensorflow 出现问题
2020/04/16 Python
如何用python批量调整视频声音
2020/12/22 Python
Python的Tqdm模块实现进度条配置
2021/02/24 Python
美国嘻哈首饰购物网站:Hip Hop Bling
2016/12/30 全球购物
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
俄罗斯外国汽车和国产汽车配件网上商店:Движком
2020/04/19 全球购物
市三好学生主要事迹
2014/01/28 职场文书
环境保护建议书
2014/08/26 职场文书
大学生在校表现评语
2014/12/31 职场文书
小学教师个人工作总结2015
2015/04/20 职场文书
地道战观后感300字
2015/06/04 职场文书
React四级菜单的实现
2022/04/08 Javascript