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

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

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)。關鍵還是在---算法!算法寫的好,什么函數都是一樣哦!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产成人精品高清免费 | 欧美精品日韩 | 女人把扒开给男人爽的 | 天天射夜夜爽 | 成人软件18免费 | 国内永久第一免费福利视频 | 天天拍天天色 | 被肉日常np高h | 日韩欧免费一区二区三区 | caoporn人人| 三上悠亚久久国产 | 91九色国产porny| 国产欧美日韩免费一区二区 | 欧美成人一区二区 | 色综合视频在线观看 | 麻豆视频免费在线播放 | 亚洲天堂v| 日韩欧美在线视频一区二区 | 美女张开大腿让男人桶 | 99视频精品国在线视频艾草 | hd在线观看免费高清视频 | 免费人成在线观看 | 美女在线看永久免费网址 | 91调教| 亚洲欧美在线免费 | 男女激情网| 91精品国产色综合久久 | 欧美一级欧美三级在线 | 精品国产免费观看一区高清 | 大团圆免费阅读全文 | 91亚洲一区二区在线观看不卡 | 成年男人永久免费看片 | 久久99精品国产自在自线 | 欧美午夜网站 | 精品免费视频 | 欧美四虎影院 | 成人久久18免费网站 | 校花小雪灌满了男人们的浓浆 | 日韩精品视频福利资源站 | 被教官揉了一晚上的奶小说 | 亚洲精品午夜视频 |