如何在PHP中排序非英语字符串

时间:2017-01-25 12:20:46

标签: php

如何在不使用collat​​or方法的情况下按字母顺序显示以下数组字符串

$country = array('Ägypten','Afghanistan', 'Äquatorialguinea', 'Albanien');

我的代码是:

function compareASCII($a, $b) {
    $a1 = iconv('UTF-8', 'ASCII//TRANSLIT', $a);
    $b1 = iconv('UTF-8', 'ASCII//TRANSLIT', $b);
    return strcmp($a1, $b1);
}

usort($country, 'compareASCII');

输出:

Array ( [0] => Ägypten [1] => Äquatorialguinea [2] => Afghanistan [3] => Albanien )

预期输出:

 Array ( [0] => Afghanistan [1] => Ägypten [2] => Albanien [3] => Äquatorialguinea )

如何获得预期的输出?

感谢您提前!!!

1 个答案:

答案 0 :(得分:1)

它可以手动(简单版本,可以扩展):

$country = array('Ägypten','Afghanistan', 'Äquatorialguinea', 'Albanien');

usort ($country,function($a,$b){
    $a=str_replace(array('Ä','Ö','Ü'),array('A','O','U'),$a);
    $b=str_replace(array('Ä','Ö','Ü'),array('A','O','U'),$b);
    return strcmp($a,$b);
});

print_r($country);

//Result
//Array ( [0] => Afghanistan [1] => Ägypten [2] => Albanien [3] => Äquatorialguinea )