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 相关文章推荐
新版mysql+apache+php Linux安装指南
Oct 09 PHP
基于php缓存的详解
May 15 PHP
PHP的构造方法,析构方法和this关键字详细介绍
Oct 22 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
Jun 25 PHP
php中opendir函数用法实例
Nov 15 PHP
PHP的引用详解
Feb 22 PHP
php使用递归函数实现数字累加的方法
Mar 16 PHP
typecho插件编写教程(二):写一个新插件
May 28 PHP
php经典算法集锦
Nov 14 PHP
php封装的单文件(图片)上传类完整实例
Oct 18 PHP
浅谈Laravel模板实体转义带来的坑
Oct 22 PHP
Laravel 6.2 中添加了可调用容器对象的方法
Oct 22 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生成各种常见验证码和Ajax验证过程
2016/01/10 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
PHP实现通过strace定位故障原因的方法
2018/04/29 PHP
学习javascript,实现插入排序实现代码
2011/07/31 Javascript
js处理表格对table进行修饰
2014/05/26 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
2015/10/19 Javascript
jquery实现删除一个元素后面的所有元素功能
2015/12/21 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
第三章之Bootstrap 表格与按钮功能
2016/04/25 Javascript
HTML5 canvas 9绘制图片实例详解
2016/09/06 Javascript
AngularJS中$apply方法和$watch方法用法总结
2016/12/13 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
详解element上传组件before-remove钩子问题解决
2020/04/08 Javascript
[02:08:58]2014 DOTA2国际邀请赛中国区预选赛 Ne VS CIS
2014/05/22 DOTA
详细解读Python中的__init__()方法
2015/05/02 Python
python连接字符串的方法小结
2015/07/13 Python
Python程序中的观察者模式结构编写示例
2016/05/27 Python
Python与R语言的简要对比
2017/11/14 Python
Python实现简易Web爬虫详解
2018/01/03 Python
解决Python plt.savefig 保存图片时一片空白的问题
2019/01/10 Python
python爬虫 线程池创建并获取文件代码实例
2019/09/28 Python
对python pandas中 inplace 参数的理解
2020/06/27 Python
CSS3中的5个有趣的新技术
2009/04/02 HTML / CSS
HTML5录音实践总结(Preact)
2020/05/07 HTML / CSS
总经理职责
2013/12/22 职场文书
公益活动邀请函
2014/02/05 职场文书
北体毕业生求职信
2014/02/28 职场文书
班级体育活动总结
2014/07/05 职场文书
导游词欢迎词
2015/02/02 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
经营场所证明范本
2015/06/19 职场文书
Shell脚本一键安装Nginx服务自定义Nginx版本
2022/03/20 Servers
Python matplotlib绘制雷达图
2022/04/13 Python
Python自动操作神器PyAutoGUI的使用教程
2022/06/16 Python
Promise静态四兄弟实现示例详解
2022/07/07 Javascript