php采集速度探究总结(原创)


Posted in PHP onApril 18, 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实现的验证码文件类实例
Jun 18 PHP
ThinkPHP函数详解之M方法和R方法
Sep 10 PHP
使用PHP uniqid函数生成唯一ID
Nov 18 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
Mar 17 PHP
CI框架中redis缓存相关操作文件示例代码
May 17 PHP
php入门教程之Zend Studio设置与开发实例
Sep 09 PHP
php生成二维码图片方法汇总
Dec 17 PHP
[原创]php正则删除img标签的方法示例
May 27 PHP
PHP批量删除jQuery操作
Jul 23 PHP
微信JSSDK分享功能图文实例详解
Apr 08 PHP
详解如何实现Laravel的服务容器的方法示例
Apr 15 PHP
Laravel框架集成UEditor编辑器的方法图文与实例详解
Apr 17 PHP
Snoopy类使用小例子
Apr 15 #PHP
mysql 中InnoDB和MyISAM的区别分析小结
Apr 15 #PHP
snoopy PHP版的网络客户端提供本地下载
Apr 15 #PHP
php zend解密软件绿色版测试可用
Apr 14 #PHP
修改Zend引擎实现PHP源码加密的原理及实践
Apr 14 #PHP
php5 mysql分页实例代码
Apr 10 #PHP
Smarty安装配置方法
Apr 10 #PHP
You might like
用PHP函数解决SQL injection
2006/12/09 PHP
PHP操作Memcache实例介绍
2013/06/14 PHP
PHP连接MySQL的2种方法小结以及防止乱码
2014/03/11 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
javascript中的new使用
2010/03/20 Javascript
jquery模拟按下回车实现代码
2011/09/20 Javascript
gridview生成时如何去掉style属性中的border-collapse
2014/09/30 Javascript
JavaScript中数组成员的添加、删除介绍
2014/12/30 Javascript
javascript中sort()的用法实例分析
2015/01/30 Javascript
jQuery实现6位数字密码输入框
2016/12/29 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
2018/12/22 jQuery
Python 文件管理实例详解
2015/11/10 Python
python实现linux下抓包并存库功能
2018/07/18 Python
python字典的遍历3种方法详解
2019/08/10 Python
Python彻底删除文件夹及其子文件方式
2019/12/23 Python
开启Django博客的RSS功能的实现方法
2020/02/17 Python
python logging.info在终端没输出的解决
2020/05/12 Python
利用纯CSS3实现动态的自行车特效源码
2017/01/20 HTML / CSS
会计系毕业个人自荐信格式
2013/09/23 职场文书
应届生财务管理求职信
2013/11/06 职场文书
挑战杯创业计划书的写作指南
2014/01/07 职场文书
《中华少年》教学反思
2014/02/15 职场文书
《我的第一本书》教学反思
2014/02/15 职场文书
总会计师岗位职责
2014/02/19 职场文书
小学生手册家长评语
2014/04/16 职场文书
小学趣味运动会加油稿
2014/09/25 职场文书
2014年监理工作总结范文
2014/11/17 职场文书
超强台风观后感
2015/06/09 职场文书
高中班主任培训心得体会
2016/01/07 职场文书
高中政治教学反思
2016/02/23 职场文书
高一英语教学反思
2016/03/03 职场文书
2019西餐厅创业计划书范文!
2019/07/12 职场文书
导游词之安徽九华山
2019/09/18 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python
教你使用Python pypinyin库实现汉字转拼音
2021/05/27 Python