У меня есть этот текст:
$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. Я не могу написать весь набор UTF8 в 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, который существует в верхней части этого вопроса, является ссылкой для меня.
(Было бы лучше, если бы вы могли дать скрипку свой ответ)