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 相关文章推荐
程序员编程十条戒律
Jul 09 PHP
php 论坛采集程序 模拟登陆,抓取页面 实现代码
Jul 09 PHP
php继承的一个应用
Sep 06 PHP
php中一个完整表单处理实现代码
Nov 10 PHP
有道搜索和IP138的IP的API接口(PHP应用)
Nov 29 PHP
php环境套包 dedeampz 伪静态设置示例
Mar 26 PHP
PHP实现获取某个月份周次信息的方法
Aug 11 PHP
PHP封装的数据库保存session功能类
Jul 11 PHP
如何离线执行php任务
Feb 21 PHP
浅谈PHP中类和对象的相关函数
Apr 26 PHP
浅析PHP数据导出知识点
Feb 17 PHP
关于PHP数组迭代器的使用方法实例
Nov 17 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
Classes and Objects in PHP5-面向对象编程 [1]
2006/10/09 PHP
PHP批量生成缩略图的代码
2008/07/19 PHP
yii框架表单模型使用及以数组形式提交表单数据示例
2014/04/30 PHP
JavaScript 中的事件教程
2007/04/05 Javascript
javascript中加号(+)操作符的一些神奇作用
2014/06/06 Javascript
JS实现跟随鼠标闪烁转动色块的方法
2015/02/26 Javascript
jQuery中attr()与prop()函数用法实例详解(附用法区别)
2015/12/29 Javascript
jQuery实现控制文字内容溢出用省略号(…)表示的方法
2016/02/26 Javascript
基于javascript实现九宫格大转盘效果
2020/05/28 Javascript
基于jQuery实现动态搜索显示功能
2016/05/05 Javascript
Angular2使用Augury来调试Angular2程序
2017/05/21 Javascript
Node.js Express安装与使用教程
2018/05/11 Javascript
解决js相同的正则多次调用test()返回的值却不同的问题
2018/10/10 Javascript
一秒学会微信小程序制作table表格
2019/02/14 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
Nodejs实现WebSocket代码实例
2020/05/19 NodeJs
python 正则式 概述及常用字符
2009/05/07 Python
Django在Win7下的安装及创建项目hello word简明教程
2014/07/14 Python
win系统下为Python3.5安装flask-mongoengine 库
2016/12/20 Python
利用Python爬虫给孩子起个好名字
2017/02/14 Python
TensorFLow用Saver保存和恢复变量
2018/03/10 Python
python生成不重复随机数和对list乱序的解决方法
2018/04/09 Python
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
python opencv摄像头的简单应用
2019/06/06 Python
Python any()函数的使用方法
2019/10/28 Python
Jupyter 无法下载文件夹如何实现曲线救国
2020/04/22 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
2020/05/03 Python
英超联赛的首选足球:Mitre足球
2019/05/06 全球购物
波兰汽车配件网上商店:iParts.pl
2020/09/08 全球购物
经典大学生求职信范文
2014/01/06 职场文书
高三历史教学反思
2014/01/09 职场文书
生物学学生自我评价
2014/01/17 职场文书
2014庆六一活动方案
2014/03/02 职场文书
买房协议书范本
2014/10/23 职场文书
孔繁森观后感
2015/06/10 职场文书
使用nginx配置访问wgcloud的方法
2021/06/26 Servers