我有這樣的文字:爲UTF8文本使用str_word_count
$text = "Başka, küskün otomobil kaçtı buraya küskün otomobil neden kaçtı
kaçtı buraya, oraya KISMEN @here #there J.J.Johanson hep.
Danny:Where is mom? I don't know! Café est weiß for 2 €uros.
My 2nd nickname is mike18.";
最近,我用這個。
$a1= array_count_values(str_word_count($text, 1, 'ÇçÖöŞşİIıĞğÜü@#é߀1234567890'));
arsort($a1);
你可以用這個小提琴檢查:
http://ideone.com/oVUGYa
但這種方法並不能解決所有問題,UTF8。我不能將whole UTF8 set作爲參數寫入str_word_count。
所以我創造了這個:
$wordsArray = explode(" ",$text);
foreach ($wordsArray as $k => $w) {
$wordsArray[$k] = str_replace(array(",","."),"",$w);
}
$wordsArray2 = array_count_values($wordsArray);
arsort($wordsArray2);
輸出應該是這樣的:
Array (
[kaçtı] => 3
[küskün] => 2
[buraya] => 2
[@here] => 1
[#there] => 1
[Danny] => 1
[mom] => 1
[don't] => 1
[know] => 1
...
...
)
這種運作良好,但它並沒有涵蓋所有的句子題。例如,我用str_replace刪除了逗號和點。
例如,這個解決方案不包括這樣的話:Hello Mike,how are you ?
邁克,以及如何不會被視爲不同的單詞。
這不包括在str_word_count解決方案:KISMEN @here #there
。在和破折號並不會被考慮在內。
這不會被覆蓋J.J.Johanson
。雖然它是一個字,但它將被視爲JJJohanson
問題,感嘆號應從單詞中刪除。
是否有更好的方式獲得str_word_count
行爲與UTF8
的支持?存在於這個問題頂部的$text
是我的參考。
(這將是更好,如果你可以提供一個撥弄你的答案)
我可以想出一些解決方案......但是它們意味着你可以在這裏而不是在@這裏接受這個可以接受的嗎? – Wrikken
不幸的是,我不想失去'@ here'&和'#there'。因爲大多數我們分析推文。 – trante
也讀這個:http://stackoverflow.com/questions/8290537/is-php-str-word-count-multibyte-safe – 2014-02-18 02:06:40