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



我正在研究如下所示的 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] 
    [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]
       [Dossier public]
    }

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

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

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

您可以通过检查返回

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

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

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

演示

使用关联数组更新了演示

相关内容

  • 没有找到相关文章

最新更新