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 cli配置文件问题分析
Oct 15 PHP
Laravel使用Caching缓存数据减轻数据库查询压力的方法
Mar 15 PHP
php一个文件搞定微信jssdk配置
Dec 12 PHP
Yii框架表单提交验证功能分析
Jan 07 PHP
通过php动态传数据到highcharts
Apr 05 PHP
php数值转换时间及时间转换数值用法示例
May 18 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
Apr 20 PHP
thinkphp5.0整合phpsocketio完整攻略(绕坑)
Oct 12 PHP
thinkphp5 模型实例化获得数据对象的教程
Oct 18 PHP
PHP实现基本留言板功能原理与步骤详解
Mar 26 PHP
详解使用php-cs-fixer格式化代码
Sep 16 PHP
PHP命令行与定时任务
Apr 01 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
DOTA2 无惧惊涛骇浪 昆卡大型水友攻略
2020/04/20 DOTA
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
2016/12/29 PHP
laravel 5.4中实现无限级分类的方法示例
2017/07/27 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
[JS]点出统计器
2020/10/11 Javascript
一个判断email合法性的函数[非正则]
2008/12/09 Javascript
jQuery实现单行文字间歇向上滚动源代码
2013/06/02 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
js判断ie版本号的简单实现代码
2014/03/05 Javascript
js交换排序 冒泡排序算法(Javascript版)
2014/10/04 Javascript
跟我学习javascript的arguments对象
2015/11/16 Javascript
详解JavaScript对象和数组
2015/12/03 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
jQuery实现拖动效果的实例代码
2017/06/25 jQuery
用原生 JS 实现 innerHTML 功能实例详解
2019/04/03 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
2019/11/29 Javascript
webpack DllPlugin xxx is not defined解决办法
2019/12/13 Javascript
[05:05]DOTA2亚洲邀请赛 战队出场仪式
2015/02/07 DOTA
python 实现登录网页的操作方法
2018/05/11 Python
python爱心表白 每天都是浪漫七夕!
2018/08/18 Python
python中字符串内置函数的用法总结
2018/09/13 Python
python爬取Ajax动态加载网页过程解析
2019/09/05 Python
Python Scrapy框架第一个入门程序示例
2020/02/05 Python
Python中的wordcloud库安装问题及解决方法
2020/05/27 Python
适合各种场合的美食礼品:Harry & David
2016/08/03 全球购物
英国伦敦的睡衣品牌:Asceno
2019/10/06 全球购物
机电一体化专业应届本科生求职信
2013/09/27 职场文书
项目经理岗位职责
2013/11/11 职场文书
不打扫卫生检讨书
2014/02/12 职场文书
百家讲坛观后感
2015/06/12 职场文书
工作时间证明
2015/06/15 职场文书
Nginx + consul + upsync 完成动态负载均衡的方法详解
2021/03/31 Servers
Python Django 后台管理之后台模型属性详解
2021/04/25 Python
goland 清除所有的默认设置操作
2021/04/28 Golang
react如何快速设置文件路径别名
2021/04/28 Javascript