php中截取單個中文

來源:互聯網
上載者:User
1、怎樣將php中出現的中文字元一個一個截取出來,有沒有不用mb_substr的方法。
2、比如我寫一個統計檔案中(單個檔案超過100萬字)中文各字元出現次數的,java中用charAt方法即可遍曆字元,程式寫下來也就幾秒,但是在php中用mb_庫十分慢,等了好幾分鐘都沒有結果。
3、附java實現的代碼 java實現統計字元出現次數

回複內容:

1、怎樣將php中出現的中文字元一個一個截取出來,有沒有不用mb_substr的方法。
2、比如我寫一個統計檔案中(單個檔案超過100萬字)中文各字元出現次數的,java中用charAt方法即可遍曆字元,程式寫下來也就幾秒,但是在php中用mb_庫十分慢,等了好幾分鐘都沒有結果。
3、附java實現的代碼 java實現統計字元出現次數

經測試,My Code應該是沒有問題的,請指正:

     $str = file_get_contents("hong.txt");     preg_match_all("/./u", $str, $arr);     $store = [];     foreach($arr[0] as $value){         if(array_key_exists($value, $store)){             $store[$value]++;         }else{             $store[$value] = 1;         }        }        asort($store);     var_dump($store);

此段代碼在php7環境下對紅樓夢進行操作(148萬字),總耗時0.464s。

中文字串分隔

 0) {        if (ord(substr($tempaddtext, $cind, 1)) < 192) {            if (substr($tempaddtext, $cind, 1) != " ") {                array_push($arr_cont, substr($tempaddtext, $cind, 1));            }            $cind++;        } elseif (ord(substr($tempaddtext, $cind, 1)) < 224) {            array_push($arr_cont, substr($tempaddtext, $cind, 2));            $cind += 2;        } else {            array_push($arr_cont, substr($tempaddtext, $cind, 3));            $cind += 3;        }    }}print_r($arr_cont);

試試這個

其實樓上的思路也沒問題,但是代碼效率不太好。我這個測試了一下,貌似有的字元識別不正常,還需要完善,只是給個思路而以。

這裡有字串截取、分割的終極解決方案。
點這裡,點這裡

用拓展理論上是最有效方案,php代碼能實現的一般都是正則來實現,在效率上是比不上拓展的。如果覺得慢回顧下演算法。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.