如何对重音字母进行排序,因为它们在 php 中没有重音?

How to sort accented letters as they are unaccented in php?

我正在编写如下所示的 php 代码,它会回显 returns 下面的数组。

ksort( $alpha_programs );  // Line A
echo '<pre>'; print_r($alpha_programs); echo '</pre>'; // Line B

B 行显示以下数组:

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

问题陈述:

我想知道我应该在上面 A 行的 php 代码中做哪些更改,以便 重音字母应该像未重音字母一样排序 ,如下所示:

   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]
       [Dossier public]
    }

这是我尝试过的方法,但似乎 sort/work 不正确。

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

setlocale 函数需要相应的区域设置在您的系统中可用。这取决于您的平台,但在 linux 系统上,您可以通过 运行 locale -a.

检查可用的语言环境

您可以通过检查 return 值来检查函数调用是否失败,因为它可以 return false.

如果是这种情况,您可以改用 intl 扩展名中的 Collator

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

Demo

Updated Demo 与关联数组