一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - php采集速度探究總結

php采集速度探究總結

2019-10-29 15:20php教程網 PHP教程

這個以前有人發帖子研究過了,但是之后只是說出了哪個函數快并沒有總結,研究問題的目的是要總結方法。

注意:下面的所有函數都沒有用正則。 

以上為取出第一個匹配的三個函數,實現相同的目的 
 

  1. function str_cut($str ,$start$end) {//取出第一個匹配,效率最高,先分割再替換  
  2. $content = strstr$str$start );  
  3. $content = substr$contentstrlen$start ), strpos$content$end ) - strlen$start ) );  
  4. return $content;  
  5. }  
  6. function str_cut1($str ,$start$end) {//取出第一個匹配,效率中,直接查找替換  
  7. $x = strpos($str$start);  
  8. return substr($str$x+strlen($start), strpos($str$end)-$x+strlen($end));  
  9. }  
  10.  
  11. function str_cut3($content,$start,$end){//取出第一個匹配,字符串越大,速度越慢!  
  12. $my = explode($start,$content);  
  13. $my = explode($end,$my[1]);  
  14. return $my[0];  
  15. }  


以下為取出所有匹配的3個函數(全部原創),實現相同的采集目的 

  1. function strcut($str ,$start$end//先搜個數,速度中等  
  2. {  
  3.     ifstrpos$str , $start ) )  
  4.     {  
  5.             $sum = substr_count($str,$start);  
  6.  
  7.             $carr = array();  
  8.             for($i=0;$i<$sum;$i++){  
  9.                 $str = strstr$str$start );  
  10.                 $str = substr$strstrlen($start));  
  11.                    $carr[] = substr$str, 0, strpos$str$end ) );  
  12.             }  
  13.  
  14.             
  15.  
  16.     }  
  17.     return $carr;  
  18. }  
  19.  
  20. function str_cut_all($str ,$start$end,$carr=array()) //遞歸,運行效率最慢!  
  21. {  
  22.     ifstrpos$str , $start ) )  
  23.     {  
  24.             $str = strstr$str$start );  
  25.             $str = substr$strstrlen($start));  
  26.                $carr[] = substr$str, 0, strpos$str$end ) );  
  27.                ifstrpos$str , $start ) )  
  28.             {  
  29.                    return str_cut_all($str ,$start$end ,$carr );  
  30.                }  
  31.  
  32.     }  
  33.     return $carr;  
  34. }  
  35.  
  36. function my_Ca($content,$start,$end){//取出所有匹配,效率最快,因為只讀一次,字符串越大越明顯  
  37.     $m = explode($start,$content);  
  38.     $a = array();  
  39.     for$i = 1;$i < count($m);$i++ )  
  40.     {  
  41.         $my = explode($end,$m[$i]);  
  42.         $a[] = $my[0];  
  43.         unset($my);  
  44.     }  
  45.     return $a;  
  46. }  

注意my-Ca比較 
如果這樣寫: 

  1. function my_Ca($content,$start,$end){//取出所有匹配  
  2. $m = explode($start,$content);  
  3. $a = array();  
  4. $sum = count($m);  
  5. for$i = 1;$i < $sum;$i++ )  
  6. {  
  7. $my = explode($end,$m[$i]);  
  8. $a[] = $my[0];  
  9. unset($my);  
  10. }  
  11. return $a;  
  12. }  


速度又快了一些! 

由上可以看出,并不是數組處理函數(explode)比字符串處理函數(substr等)慢,也不是那個比這個快,因為在匹配多個數據的時候匹配的越多數組函數的優勢越大,處理字符串就象切蛋糕一樣越切越小。匹配單個字符串運用切的思路去做也是一樣的效果(str_cut)。關鍵還是在---算法!算法寫的好,什么函數都是一樣哦!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 天若有情1992国语版完整版 | jazz中国女人护士 | a级毛片毛片免费很很综合 a级黄色视屏 | 猫咪社区免费资源在线观看 | 岛国a香蕉片不卡在线观看 荡女淫春2古装 | 国产普通话对白露脸流出 | 国产性片在线观看 | 热99精品只有里视频最新 | 特级淫片欧美高清视频蜜桃 | 成年私人影院免费视频网站 | 日本三级欧美三级人妇英文 | 国产精品亚洲精品日韩已方 | 国产色网| 欧美日韩国产亚洲人成 | 西西人体大胆啪啪私拍色约约 | 欧美日韩亚洲综合在线一区二区 | 91影视在线看免费观看 | 涩涩屋在线播放 | 亚洲国产欧美在线成人aaaa | 波多野结衣在线观看中文字幕 | 精品丰满人妻无套内射 | 波多野结衣两女调教 | 欧美黑人性 | b站免费 | 黑人巨大初黑人解禁作品 | 免费全看男女拍拍拍的视频 | a优女网 | 蜜桃免费 | 亚洲 综合 自拍 精品 在线 | 男人把j放进女人的p里视频 | 我半夜摸妺妺的奶C了她 | 亚洲午夜精品久久久久久成年 | 天作谜案免费完整版在线观看 | 国产极品精频在线观看 | 日韩免费视频一区 | 91视频免费观看网站 | 全弄乱纶小说 | 国产成人精品高清在线 | 毛片免费网站 | 免费又爽又黄禁片视频在线播放 | 青草视频免费 |