Неверный результат для array_count_values ​​в PHP

У меня есть такой массив -

Array ( [0] => একটু [1] => আরো [2] => নয় [3] => কাছে [4] => থাকো [5] => না [6] => কাছে [7] => ঋে [8] => না [9] => আরো [10] => কাছে [11] => আজ [12] => দুজনের [13] => প্রথম [14] => মিলনের [15] => চাঁদ [16 ] => তারা [17] => ঐ [18] => সাক্ষী [19] => আছে [20] => তুমি [21] => আমার [22] => আমি [23] => তোমার [24] = > [25] => মন [26] => যে [27] => ভরেছে [28] => জোছনা [29] => ঝরেছে [30] => পৃথিবী [31] => দ্যাখো [32] => ঐ [ 33] => ঘুমিয়ে [34] => পড়েছে [35] => মন [36] => যে [37] => ভরেছে [38] => জোছনা [39] => ঝরেছে [40] => পৃথিবী [41] => দ্যাখো [42] => ঐ [43] => ঘুমিয়ে [44] => পড়েছে [45] => আমি [46] => তোমার [47] => তুমি [48] => আমার [49] => একটু [50] => আরো [51] => নয় [52] => কাছে [53] => থাকো [54] => না [55] => কাছে [56] => নাছে [56] => না] [নাছে [56] => না] 58] => আরো [59] => কাছে [60] => আমি [61] => তোমার [62] => তুমি [63] => আমার [64] => 6ার [64] => 6ধ] [6ধ] > হাসিতে [67] => হাওয়ার [68] => বাঁশিতে [69] => এ [71] => রাত [71] => শেখালো [72] => ভালো [73] => যে [74] => বাসিতে [75] => আমি [76] => তোমার [77] => তুমি [78] => আমার [79] => একটু [80] => আরো [81] => নয় [82] => কাছে [83] => থাকো [84] => নাা [85] => নাা [85] => ] => ডাকো [87] => না [88] => আরো [89] => কাছে [90] => তুমি [91] => আমার [92] => আমতি [93] => আমতি [93] => ঋ4ধি] > )

Когда я подсчитываю одни и те же значения, используя следующий код, он дает неправильные результаты, как показано ниже:

$wordCountArr = array_count_values($matchWords);

Array ( [একটু] => 1 [আরো] => 6 [নয়] => 3 [কাছে] => 6 [থাকো] => 3 [না] => 6 [ কাছে] => 3 [ধধ]া [আজ] => 1 [দুজনের] => 1 [প্রথম] => 1 [মিলনের] => 1 [চাঁদ] => 1 [তারা] => 1 [ঐ] => 3 [সাক্ষী] => 1 [আছে ] => 1 [ তুমি] => 2 [আমার] => 5 [আমি] => 2 [তোমার] => 5 [] => 3 [ মন] => 1 [যে] => 3 [ভরে]ছে 2 [জোছনা] => 2 [ঝরেছে] => 2 [পৃথিবী] => 2 [দ্যাখো] => 2 [ঘুমিয়ে] => 2 [পড়েছে] => 2 [মন] => 1 [আমি] => 3 [ তুমি] => 3 [একটু] => 2 [ফুলেরই] => 1 [হাসিতে] => 1 [হাওয়ার] => 1 [বাঁশিতে] => 1 [এ] => 1 [রাত] => 1 [শেখালো] => 1 [ভালো] => 1 [বাসিতে] => 1 )

Но почему [কাছে] => 6 и [কাছে] => 3 ??? Предполагается, что это [কাছে] => 9 Теперь мне нужно обрезать пробелы до и после или сопоставлять слова с пробелами? Я использовал array_map('trim',$matchWords), но не повезло! Как я могу это исправить? Пожалуйста помоги !


person Nihar    schedule 29.05.2016    source источник
comment
обрезка удаляет пробелы в начале и/или конце строки, а не в середине; вы можете использовать для этого str_replace; но для UTF-8 я бы рекомендовал вместо этого использовать preg_replace   -  person Mark Baker    schedule 29.05.2016
comment
Используется $matchWords = preg_replace('/[\s\t\r\n]\+/iu', '', $matchWords); Но не помогает!   -  person Nihar    schedule 29.05.2016
comment
trim — это однобайтовая функция, и в этом случае она работать не будет. Вам нужно использовать многобайтовую функцию обрезки (которой в PHP нет, но помощь можно найти на эта страница, смотрите комментарии).   -  person Sverri M. Olsen    schedule 29.05.2016
comment
Если у вас нет пробела, вы, вероятно, страдаете от: stackoverflow.com/questions/7931204/   -  person Petesh    schedule 29.05.2016


Ответы (1)


Да, соответствие для них отдельное из-за места. trim() для удаления пробелов для каждого слова не будет работать в вашем случае, так как не удаляет пробелы Unicode.

Итак, ваше решение использует: preg_replace.

Ссылаться:

Обрезать пробелы Unicode

почему обрезка php не действительно удалить все пробелы и разрывы строк?

person Ani Menon    schedule 29.05.2016
comment
$matchWords = preg_replace('/^\p{Z}+|\p{Z}+$/u', '', $matchWords); Использовал это, но все еще та же проблема! - person Nihar; 29.05.2016
comment
$matchWords = preg_replace('/^[\pZ\pC]+|[\pZ\pC]+$/u','',$matchWords); С этим работает! Спасибо за ссылку @Menon - person Nihar; 29.05.2016
comment
Вы также можете использовать это: $str = preg_replace('/^[\pZ\pC]+|[\pZ\pC]+$/u','',$str); и $str = preg_replace('/\s+/u', '', $str); - person Ani Menon; 29.05.2016