Как отсортировать буквы с акцентом, поскольку они не акцентированы в php? - PullRequest
0 голосов
/ 20 июня 2019

Я работаю над кодом php, как показано ниже, который в echo возвращает массив под ним.

<code>ksort( $alpha_programs );  // Line A
echo '<pre>'; print_r($alpha_programs); echo '
';// Строка B

Строка B отображает следующий массив:

Array
(
    [Des Canadiens exceptionnels] 
    [Did You Know?] 
    [Documentaires CPAC] 
    [Dossier public] 
    [Débats Vote 2015] 
    [Délibérations de la Chambre des communes] 
    [Délibérations du Sénat] 
)

Постановка задачи:

Мне интересно, какие изменения яв коде php выше в строке A, чтобы буквы с акцентом сортировались так, как если бы они были без акцента , как показано ниже:

   Array
    (

       [Débats Vote 2015]
       [Délibérations de la Chambre des communes]
       [Délibérations du Sénat]
       [Des Canadiens exceptionnels]
       [Did You Know?]
       [Documentaires CPAC]
       [Dossier public]
    }

Это то, что я пробовал, но это не таккажется, сортировать / работать правильно.

setlocale(LC_COLLATE, 'fr_CA.utf8');
asort($alpha_programs, SORT_LOCALE_STRING);

1 Ответ

2 голосов
/ 20 июня 2019

Функция setlocale требует наличия соответствующей локали в вашей системе.Это зависит от вашей платформы, но в системах Linux вы можете проверить доступные локали, выполнив locale -a.

. Вы можете проверить, не произошел ли сбой вызова функции, проверив возвращаемое значение, поскольку оно может вернуть false.

В этом случае вы можете использовать Collator из расширения intl вместо:

$collator = Collator::create('fr_CA.utf8');
$collator->sort($alpha_programs);

Демо

Обновленная демоверсия с ассоциативным массивом

...