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作的文本留言本的例子(一)
Oct 09 PHP
简单示例AJAX结合PHP代码实现登录效果代码
Jul 25 PHP
PHP下对字符串的递增运算代码
Aug 21 PHP
PHP 显示客户端IP与服务器IP的代码
Oct 12 PHP
30 个很棒的PHP开源CMS内容管理系统小结
Oct 14 PHP
PHP Curl出现403错误的解决办法
May 29 PHP
Thinkphp使用mongodb数据库实现多条件查询方法
Jun 26 PHP
PHP实现利用MySQL保存session的方法
Aug 23 PHP
php进行支付宝开发中return_url和notify_url的区别分析
Dec 22 PHP
Apache服务器下防止图片盗链的办法
Jul 06 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
Oct 03 PHP
php + WebUploader实现图片批量上传功能
May 06 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程序61条面向对象分析设计的经验小结
2008/11/12 PHP
ionCube 一款类似zend的PHP加密/解密工具
2010/07/25 PHP
CI框架中集成CKEditor编辑器的教程
2014/06/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
2014/06/24 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
2016/01/27 PHP
php之可变函数的实例详解
2017/09/13 PHP
PHP 7.4中使用预加载的方法详解
2019/07/08 PHP
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
引用其它js时如何同时处理多个window.onload事件
2014/09/02 Javascript
ECMAScript5(ES5)中bind方法使用小结
2015/05/07 Javascript
轻松掌握JavaScript装饰者模式
2016/08/27 Javascript
jQuery实现动态给table赋值的方法示例
2017/07/04 jQuery
浅谈JavaScript find 方法不支持IE的问题
2017/09/28 Javascript
Vue实现数字输入框中分割手机号码的示例
2017/10/10 Javascript
vue单页面打包文件大?首次加载慢?nginx带你飞,从7.5M到1.3M蜕变过程(推荐)
2018/01/16 Javascript
vue实现点击展开点击收起效果
2018/04/27 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
[01:07:47]Secret vs Optic Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
Python与shell的3种交互方式介绍
2015/04/11 Python
python修改字典内key对应值的方法
2015/07/11 Python
python 读写txt文件 json文件的实现方法
2016/10/22 Python
Python 通过URL打开图片实例详解
2017/06/01 Python
python中模块查找的原理与方法详解
2017/08/11 Python
Python实现翻转数组功能示例
2018/01/12 Python
详解python函数传参是传值还是传引用
2018/01/16 Python
Python 一句话生成字母表的方法
2019/01/02 Python
Python3.5实现的罗马数字转换成整数功能示例
2019/02/25 Python
基于python的socket实现单机五子棋到双人对战
2020/03/24 Python
用Python写一个自动木马程序
2019/09/17 Python
HTML5之多线程(Web Worker)
2019/01/02 HTML / CSS
Ticketmaster意大利:音乐会、节日、艺术和剧院的官方门票
2019/12/23 全球购物
小区消防演习方案
2014/02/21 职场文书
计算机专业职业规划
2014/02/28 职场文书
施工安全责任书范本
2014/07/24 职场文书
魂断蓝桥观后感
2015/06/10 职场文书
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python