количество слов — PHP array_count_values ​​(); видит меня и î как разные буквы

Я работаю над текстом в арабском стиле. Есть массив $word = array();,

Он хранит некоторые арабские словаlim', 'ali', 'kefrâ', 'lîm',

Вы видите, что у какого-то слова есть шляпы (мы называем их так). Я пытаюсь посчитать каждое слово методом array_count_values($word); Однако это видит lim а также lîm как два разных слова. Следует считать их одним. Есть ли другой метод для этого? Что я могу сделать? Благодарю.

0

Решение

Вы можете написать специальную функцию, которая конвертирует символы «со шляпами» в строку в символы без таковых. Есть пример (слова на польском языке, но принцип точно такой же):

<?php

$word = array('źrebię', 'łódź', 'wiazanka', 'lodź', 'wiązanka');

$result = array_count_values($word);
var_dump($result); //its wrong answer

$wordConverted = array();
foreach($word as $element)
{
$wordConverted[] = transformSpecialChars($element);
}

var_dump(array_count_values($wordConverted)); //count correctlyfunction transformSpecialChars($string)
{
$replaceFrom = array('ą', 'ę', 'ź', 'ż', 'ł', 'ó');
$replaceTo = array('a', 'e', 'z', 'z', 'l', 'o');

return str_replace($replaceFrom, $replaceTo, $string);
}

И результат обоих var_dumps:

// WRONG
array(5) {
["źrebię"]=>
int(1)
["łódź"]=>
int(1)
["wiazanka"]=>
int(1)
["lodź"]=>
int(1)
["wiązanka"]=>
int(1)
}

// SEEMS FINE
array(3) {
["zrebie"]=>
int(1)
["lodz"]=>
int(2)
["wiazanka"]=>
int(2)
}

Конечно, вы должны подходить для массивов, используемых для преобразования ($replaceFrom а также $replaceTo) для ваших нужд.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]