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实现WEB动态网页静态
Oct 09 PHP
php将数据库中所有内容生成静态html文档的代码
Apr 12 PHP
探讨:web上存漏洞及原理分析、防范方法
Jun 29 PHP
php如何连接sql server
Oct 16 PHP
Yii2 RESTful中api的使用及开发实例详解
Jul 06 PHP
如何正确配置Nginx + PHP
Jul 15 PHP
PHP获取input输入框中的值去数据库比较显示出来
Nov 16 PHP
PHP用户注册邮件激活账户的实现代码
May 31 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
Sep 28 PHP
php用wangeditor3实现图片上传功能
Aug 22 PHP
laravel 之 Eloquent 模型修改器和序列化示例
Oct 17 PHP
PHP7 整型处理机制修改
Mar 09 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自定义时间转换函数示例
2016/12/07 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
2018/04/21 PHP
php往mysql中批量插入数据实例教程
2018/12/12 PHP
JavaScript语法着色引擎(demo及打包文件下载)
2007/06/13 Javascript
js编码之encodeURIComponent使用介绍(asp,php)
2012/03/01 Javascript
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
2013/03/11 Javascript
jquery动态加载js三种方法实例
2013/08/03 Javascript
JavaScript数值数组排序示例分享
2014/05/27 Javascript
javascript中html字符串转化为jquery dom对象的方法
2015/08/27 Javascript
浅析BootStrap栅格系统
2016/06/07 Javascript
vue.js指令和组件详细介绍及实例
2017/04/06 Javascript
微信小程序商品详情页规格属性选择示例代码
2017/10/30 Javascript
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
js 实现ajax发送步骤过程详解
2019/07/25 Javascript
javascript简单实现深浅拷贝过程详解
2019/10/08 Javascript
JavaScript实现横版菜单栏
2020/03/17 Javascript
Python正则表达式的使用范例详解
2014/08/08 Python
Python实现的数据结构与算法之双端队列详解
2015/04/22 Python
python获取各操作系统硬件信息的方法
2015/06/03 Python
Python2随机数列生成器简单实例
2017/09/04 Python
Django使用Mysql数据库已经存在的数据表方法
2018/05/27 Python
PyCharm设置护眼背景色的方法
2018/10/29 Python
Python中dict和set的用法讲解
2019/03/28 Python
Python集中化管理平台Ansible介绍与YAML简介
2019/06/12 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
2020/04/14 Python
Matplotlib 折线图plot()所有用法详解
2020/07/28 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
2020/08/24 Python
解决pip安装的第三方包在PyCharm无法导入的问题
2020/10/15 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
python二维图制作的实例代码
2020/12/03 Python
如果让你测试一台高速激光打印机,你都会进行哪些测试
2012/12/04 面试题
法务专员岗位职责
2014/01/02 职场文书
时尚休闲吧创业计划书
2014/01/25 职场文书
继续教育个人总结
2015/03/03 职场文书
高一地理教学工作总结
2015/08/12 职场文书
有关信念的名言语录集锦
2019/12/06 职场文书