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 foreach 参数强制类型转换的问题
Dec 10 PHP
php header Content-Type类型小结
Jul 03 PHP
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
Nov 10 PHP
网页上facebook分享功能具体实现
Jan 26 PHP
CI框架中libraries,helpers,hooks文件夹详细说明
Jun 10 PHP
将CMYK颜色值和RGB颜色相互转换的PHP代码
Jul 28 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
Oct 08 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
Dec 15 PHP
给大家分享几个常用的PHP函数
Jan 15 PHP
PHP开发中csrf攻击的简单演示和防范
May 07 PHP
PHP智能识别收货地址信息实例
Jan 05 PHP
PHP5.6读写excel表格文件操作示例
Feb 26 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线性表顺序存储实现代码(增删查改)
2012/02/16 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
2014/09/09 PHP
php实现XML和数组的相互转化功能示例
2017/02/08 PHP
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
使用jQuery的attr方法来修改onclick值
2014/07/07 Javascript
checkbox选中与未选中判断示例
2014/08/04 Javascript
基于Jquery实现万圣节快乐特效
2015/11/01 Javascript
jQuery实现简单的DIV拖动效果
2016/02/19 Javascript
jQuery 选择同时包含两个class的元素的实现方法
2016/06/01 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
Bootstrap导航条的使用和理解3
2016/12/14 Javascript
JavaScript获取键盘按键的键码(参照表)
2017/01/10 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
2018/02/06 Javascript
Vue-cli配置打包文件本地使用的教程图解
2018/08/02 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
2018/08/13 Javascript
vue多次循环操作示例
2019/02/08 Javascript
详解ng-alain动态表单SF表单项设置必填和正则校验
2019/06/11 Javascript
JS实现骰子3D旋转效果
2019/10/24 Javascript
微信小程序连接服务器展示MQTT数据信息的实现
2020/07/14 Javascript
python删除列表中重复记录的方法
2015/04/28 Python
python实现数值积分的Simpson方法实例分析
2015/06/05 Python
简单解析Django框架中的表单验证
2015/07/17 Python
python实现读取大文件并逐行写入另外一个文件
2018/04/19 Python
Django 路由控制的实现代码
2018/11/08 Python
python 在屏幕上逐字显示一行字的实例
2018/12/24 Python
python pandas获取csv指定行 列的操作方法
2019/07/12 Python
Django框架模板用法入门教程
2019/11/04 Python
python使用docx模块读写docx文件的方法与docx模块常用方法详解
2020/02/17 Python
python百行代码自制电脑端网速悬浮窗的实现
2020/05/12 Python
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
2020/11/25 Python
COS美国官网:知名服装品牌
2019/04/08 全球购物
个人查摆剖析材料
2014/02/04 职场文书
春节请假条
2014/04/11 职场文书
委托书范本格式
2019/04/18 职场文书
python调用ffmpeg命令行工具便捷操作视频示例实现过程
2021/11/01 Python
Mysql数据库手动及定时备份步骤
2021/11/07 MySQL