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 相关文章推荐
Mysql和网页显示乱码解决方法集锦
Mar 27 PHP
需要发散思维学习PHP
Jun 29 PHP
Linux环境下搭建php开发环境的操作步骤
Jun 17 PHP
删除html标签得到纯文本可处理嵌套的标签
Apr 28 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
May 15 PHP
PHP编程中的常见漏洞和代码实例
Aug 06 PHP
javascript some()函数用法详解
Nov 13 PHP
详解WordPress中添加和执行动作的函数使用方法
Dec 29 PHP
配置Nginx+PHP的正确思路与过程
May 10 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
May 18 PHP
PHP简单读取PDF页数的实现方法
Jul 21 PHP
PHP中PDO事务处理操作示例
May 02 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
第一节--面向对象编程
2006/11/16 PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
2012/10/05 PHP
JSON字符串传到后台PHP处理问题的解决方法
2016/06/05 PHP
javascript编程起步(第六课)
2007/01/10 Javascript
Jquery动态添加及删除页面节点元素示例代码
2014/06/16 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
javascript 中__proto__和prototype详解
2014/11/25 Javascript
详解Chai.js断言库API中文文档
2018/01/31 Javascript
vue绑定的点击事件阻止冒泡的实例
2018/02/08 Javascript
jQuery实现表格隔行换色
2018/09/01 jQuery
详解Vue.js v-for不支持IE9的解决方法
2018/12/29 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
js实现动态时钟
2020/03/12 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
pytorch + visdom 处理简单分类问题的示例
2018/06/04 Python
python+numpy+matplotalib实现梯度下降法
2018/08/31 Python
python3 map函数和filter函数详解
2019/08/26 Python
Python turtle库绘制菱形的3种方式小结
2019/11/23 Python
Python是什么 Python的用处
2020/05/26 Python
python实现录音功能(可随时停止录音)
2020/10/26 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
2020/11/02 Python
【HTML5】3D模型--百行代码实现旋转立体魔方实例
2016/12/16 HTML / CSS
Urban Outfitters美国官网:美国生活方式品牌
2016/08/26 全球购物
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
Dodax奥地利:音乐、电影、书籍、玩具、电子产品等
2019/08/31 全球购物
Ellos瑞典官网:北欧地区时尚、美容和住宅领域领先的电子商务网站
2019/11/21 全球购物
高中毕业自我鉴定范文
2013/10/02 职场文书
同事打架检讨书
2014/02/04 职场文书
企业法人代表任命书
2014/06/06 职场文书
优秀教师单行材料
2014/12/16 职场文书
2015年财务试用期工作总结
2014/12/24 职场文书
教师考核评语大全
2014/12/31 职场文书
《画家和牧童》教学反思
2016/02/17 职场文书
python内置模块之上下文管理contextlib
2022/06/14 Python
SpringBoot接入钉钉自定义机器人预警通知
2022/07/15 Java/Android