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与XML的PDF文档生成技术
Oct 09 PHP
杏林同学录(六)
Oct 09 PHP
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
Oct 13 PHP
使用php判断服务器是否支持Gzip压缩功能
Sep 24 PHP
kohana框架上传文件验证规则写法示例
Jul 14 PHP
PHP多文件上传类实例
Mar 07 PHP
php使用Jpgraph绘制柱形图的方法
Jun 10 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
Apr 15 PHP
PHP中大括号'{}'用法实例总结
Feb 08 PHP
解决form中action属性后面?传递参数 获取不到的问题
Jul 21 PHP
PHP面向对象类型约束用法分析
Jun 12 PHP
Laravel5.4框架中视图共享数据的方法详解
Sep 05 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表单转换textarea换行符的方法
2010/09/10 PHP
优化PHP代码技巧的小结
2013/06/02 PHP
php实现的DateDiff和DateAdd时间函数代码分享
2014/08/16 PHP
PHP中仿制 ecshop验证码实例
2017/01/06 PHP
PHP递归删除多维数组中的某个值
2017/04/17 PHP
javascript显示用户停留时间的简单实例
2013/08/05 Javascript
100个不能错过的实用JS自定义函数
2014/03/05 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
angular 基于ng-messages的表单验证实例
2017/05/04 Javascript
bootstrap table服务端实现分页效果
2017/08/10 Javascript
解决Vue编译时写在style中的路径问题
2017/09/21 Javascript
微信小程序实现红包功能(后端PHP实现逻辑)
2018/07/11 Javascript
vue项目在安卓低版本机显示空白的原因分析(两种)
2018/09/04 Javascript
解决echarts的多个折现数据出现坐标和值对不上的问题
2018/12/28 Javascript
three.js实现炫酷的全景3D重力感应
2018/12/30 Javascript
使用Vue.js中的过滤器实现幂方求值的方法
2019/08/27 Javascript
Django在Win7下的安装及创建项目hello word简明教程
2014/07/14 Python
Python THREADING模块中的JOIN()方法深入理解
2015/02/18 Python
python实现发送和获取手机短信验证码
2016/01/15 Python
Python爬虫:通过关键字爬取百度图片
2017/02/17 Python
Python对字符串实现去重操作的方法示例
2017/08/11 Python
Python实现发送与接收邮件的方法详解
2018/03/28 Python
美团网旗下网上订餐平台:美团外卖
2020/03/05 全球购物
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
Conforama瑞士:家具、厨房、电器、装饰
2020/09/06 全球购物
班组长工作职责
2013/12/25 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
董存瑞观后感
2015/06/11 职场文书
开学典礼校长致辞
2015/07/29 职场文书
药房管理制度范本
2015/08/06 职场文书
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
2021/05/05 Golang
Python入门学习之类的相关知识总结
2021/05/25 Python
Vue CLI中模式与环境变量的深入详解
2021/05/30 Vue.js
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle
分析SQL窗口函数之排名窗口函数
2022/04/21 Oracle