php不用正则采集速度探究总结


Posted in PHP onMarch 24, 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&amp;mysql(三)
Oct 09 PHP
PHP中动态HTML的输出技术
Oct 09 PHP
PHP 字符串操作入门教程
Dec 06 PHP
学习使用curl采集curl使用方法
Jan 11 PHP
PHP 转义使用详解
Jul 15 PHP
php获取文件大小的方法
Feb 26 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
Jun 26 PHP
php中创建和调用webservice接口示例
Jul 25 PHP
PHP实现通过URL提取根域名
Mar 31 PHP
php读取torrent种子文件内容的方法(测试可用)
May 03 PHP
php数组冒泡排序算法实例
May 06 PHP
PHP获取路径和目录的方法总结【必看篇】
Mar 04 PHP
php木马攻击防御之道
Mar 24 #PHP
php入门小知识
Mar 24 #PHP
PHP 实例化类的一点摘记
Mar 23 #PHP
深思 PHP 数组遍历的差异(array_diff 的实现)
Mar 23 #PHP
附件名前加网站名
Mar 23 #PHP
由php if 想到的些问题
Mar 22 #PHP
php实现mysql数据库备份类
Mar 20 #PHP
You might like
PHP中路径问题的解决方案
2006/10/09 PHP
php post大量数据时发现数据丢失问题解决方法
2015/06/20 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
2018/01/29 PHP
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
php+laravel依赖注入知识点总结
2019/11/04 PHP
JavaScript iframe的相互操作浅析
2009/10/14 Javascript
js 获取元素下面所有li的两种方法
2014/04/14 Javascript
JavaScript每天必学之数组和对象部分
2016/09/17 Javascript
vue实现简单的MVVM框架
2018/08/05 Javascript
JS面试题大坑之隐式类型转换实例代码
2018/10/14 Javascript
JS如何实现网站中PC端和手机端自动识别并跳转对应的代码
2020/01/08 Javascript
Javascript如何实现双指控制图片功能
2020/02/25 Javascript
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
2020/08/05 Javascript
Python中用Decorator来简化元编程的教程
2015/04/13 Python
Python 实现在文件中的每一行添加一个逗号
2018/04/29 Python
Python笔试面试题小结
2019/09/07 Python
如何使用python进行pdf文件分割
2019/11/11 Python
wxPython实现列表增删改查功能
2019/11/19 Python
Django Haystack 全文检索与关键词高亮的实现
2020/02/17 Python
python如何写try语句
2020/07/14 Python
CSS教程:CSS3圆角属性
2009/04/02 HTML / CSS
美国领先的个性化礼品商城:Personalization Mall
2019/07/27 全球购物
本科毕业生专业自荐书范文
2014/02/05 职场文书
学雷锋演讲稿
2014/03/04 职场文书
老公给老婆的保证书
2014/04/28 职场文书
优秀毕业生求职信
2014/06/05 职场文书
英语系本科生求职信
2014/07/15 职场文书
小学生放飞梦想演讲稿
2014/08/26 职场文书
2014年音乐教师工作总结
2014/12/03 职场文书
幼儿园大班教师个人总结
2015/02/05 职场文书
公司员工辞职信范文
2015/05/12 职场文书
个人职业生涯规划之自我评估篇
2019/09/03 职场文书
解决golang 关于全局变量的坑
2021/05/06 Golang
详解Python requests模块
2021/06/21 Python
HTML5 语义化标签(移动端必备)
2021/08/23 HTML / CSS