由于在php中没有重音字母,如何对重音字母进行排序?

时间:2019-06-20 16:50:58

标签: php sorting localization setlocale asort

我正在处理如下所示的php代码,该代码在echo时返回其下面的数组。

ksort( $alpha_programs );  // Line A
echo '<pre>'; print_r($alpha_programs); echo '</pre>'; // Line 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] 
)

问题陈述:

我想知道应该在上面的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 CPAC]
       [Dossier public]
    }

这是我尝试过的方法,但似乎无法正确排序/工作。

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

1 个答案:

答案 0 :(得分:2)

setlocale函数要求相应的语言环境在您的系统中可用。这取决于您的平台,但是在Linux系统上,您可以通过运行locale -a来检查可用的语言环境。

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

在这种情况下,您可以使用intl扩展名中的Collator

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

Demo

Updated Demo和关联数组