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下图片文字混合水印与缩略图实现代码
Dec 11 PHP
php学习笔记 面向对象的构造与析构方法
Jun 13 PHP
深入PHP FTP类的详解
Jun 13 PHP
PHP常用的缓存技术汇总
May 05 PHP
神盾加密解密教程(二)PHP 神盾解密
Jun 08 PHP
php中fsockopen用法实例
Jan 05 PHP
PHP+shell实现多线程的方法
Jul 01 PHP
常见PHP数据库解决方案分析介绍
Sep 24 PHP
两种php实现图片上传的方法
Jan 22 PHP
php递归函数怎么用才有效
Feb 24 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 PHP
深入理解PHP+Mysql分布式事务与解决方案
Dec 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
PHP中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
php 格式化数字的时候注意数字的范围
2010/04/13 PHP
深入分析php中接口与抽象类的区别
2013/06/08 PHP
ThinkPHP内置jsonRPC的缺陷分析
2014/12/18 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
php array_multisort 对数组进行排序详解及实例代码
2016/10/27 PHP
php获取网站根目录物理路径的几种方法(推荐)
2017/03/04 PHP
PHP手机号中间四位用星号*代替显示的实例
2017/06/02 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
2017/07/13 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
2019/05/09 PHP
javascript里的条件判断
2007/02/27 Javascript
JavaScript 题型问答有答案参考
2010/02/17 Javascript
爆炸式的JS圆形浮动菜单特效代码
2010/03/03 Javascript
javascript下string.format函数补充
2010/08/24 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
2013/06/04 Javascript
js实现仿京东2级菜单效果(带延时功能)
2015/08/27 Javascript
BootStrap智能表单实战系列(七)验证的支持
2016/06/13 Javascript
BootStrap入门教程(二)之固定的内置样式
2016/09/19 Javascript
原生js编写2048小游戏
2017/03/17 Javascript
vue生成随机验证码的示例代码
2017/09/29 Javascript
vue 实现购物车总价计算
2019/11/06 Javascript
对python数据切割归并算法的实例讲解
2018/12/12 Python
pyttsx3实现中文文字转语音的方法
2018/12/24 Python
django使用admin站点上传图片的实例
2019/07/28 Python
2020版Python学习路线图(附学习资料)
2020/09/15 Python
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
2016/10/23 HTML / CSS
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
项目副经理岗位职责
2013/12/30 职场文书
2014年机关植树节活动方案
2014/02/27 职场文书
人力资源管理求职信
2014/08/07 职场文书
暑假安全教育广播稿
2014/09/10 职场文书
关于教师节的广播稿
2014/09/10 职场文书
pytorch中的model=model.to(device)使用说明
2021/05/24 Python
在Python中如何使用yield
2021/06/07 Python
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
2021/06/09 Vue.js