【问题标题】:How to sort non-english strings in php如何在php中对非英文字符串进行排序
【发布时间】:2017-01-25 12:20:46
【问题描述】:

如何在不使用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 )

如何得到预期的输出?

感谢您的提前!!!

【问题讨论】:

标签: php


【解决方案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 )

【讨论】:

  • @vinoth 但是请阅读差异。在mb_str_replacestr_replace 之间。在某些情况下,该功能可能无法正常工作。这都是关于编码的。但是只要这个功能适合你的随身物品就可以了:-)
猜你喜欢
  • 2017-05-04
  • 2011-10-03
  • 1970-01-01
  • 2012-04-12
  • 2014-06-30
  • 2011-12-17
  • 2010-09-08
  • 2012-01-29
相关资源
最近更新 更多