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