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制作静态网站的模板框架(一)
Oct 09 PHP
我的论坛源代码(三)
Oct 09 PHP
推荐php模板技术[转]
Jan 04 PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
Dec 25 PHP
PHPThumb图片处理实例
May 03 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
Jun 25 PHP
php实现mysql事务处理的方法
Dec 25 PHP
PHP运行模式汇总
Nov 06 PHP
php字符集转换
Jan 23 PHP
Laravel框架实现定时发布任务的方法
Aug 16 PHP
Laravel框架实现的上传图片到七牛功能详解
Sep 06 PHP
php post换行的方法
Feb 03 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
ThinkPHP中redirect用法分析
2014/12/05 PHP
PHP使用正则表达式获取微博中的话题和对象名
2015/07/18 PHP
JavaScript和ActionScript的交互实现代码
2010/08/01 Javascript
js里怎么取select标签里的值并修改
2012/12/10 Javascript
JS解析json数据并将json字符串转化为数组的实现方法
2012/12/25 Javascript
artdialog的图片/标题以及关闭按钮不显示的解决方法
2013/06/27 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
基于javascript实现根据身份证号码识别性别和年龄
2016/01/22 Javascript
NodeJs——入门必看攻略
2016/06/27 NodeJs
原生javascript实现的ajax异步封装功能示例
2016/11/03 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
javascript浏览器用户代理检测脚本实现方法
2017/10/27 Javascript
详解jQuery设置内容和属性
2019/04/11 jQuery
[03:47]2015国际邀请赛第三日现场精彩回顾
2015/08/08 DOTA
python pdb调试方法分享
2014/01/21 Python
在Python中测试访问同一数据的竞争条件的方法
2015/04/23 Python
python获取一组数据里最大值max函数用法实例
2015/05/26 Python
Python使用剪切板的方法
2017/06/06 Python
Python文件操作之合并文本文件内容示例代码
2017/09/19 Python
Python实现的自定义多线程多进程类示例
2018/03/23 Python
Python中的asyncio代码详解
2019/06/10 Python
python range实例用法分享
2020/02/06 Python
python实现ftp文件传输功能
2020/03/20 Python
使用CSS3制作一个简单的Chrome模拟器
2015/07/15 HTML / CSS
奥斯汀独木舟和皮划艇:Austin Canoe & Kayak
2018/05/22 全球购物
俄罗斯花园种植材料批发和零售网上商店:Беккер
2019/07/22 全球购物
ORLY官网:美国专业美甲一线品牌
2019/12/11 全球购物
服装公司总经理岗位职责
2013/11/30 职场文书
经典大学生求职信范文
2014/01/06 职场文书
计算机专业优秀大学生自我总结
2014/01/21 职场文书
毕业生求职信的经典写法
2014/01/31 职场文书
触摸春天教学反思
2014/02/03 职场文书
财务人员的自我评价范文
2014/03/03 职场文书
成本会计实训报告
2014/11/05 职场文书
2014年关工委工作总结
2014/11/17 职场文书