自然順序アルゴリズムを使用してPHPでUnicode/UTF-8文字で配列をソートすることはできますか?例えば(この配列の順序が正しく注文される):UnicodeをサポートするPHPのNaturalソートアルゴリズム?
$array = array
(
0 => 'Agile',
1 => 'Ágile',
2 => 'Àgile',
3 => 'Âgile',
4 => 'Ägile',
5 => 'Ãgile',
6 => 'Test',
);
私はASORT($配列)をしようとすると、私は次のような結果を得る:
Array
(
[0] => Agile
[6] => Test
[2] => Àgile
[1] => Ágile
[3] => Âgile
[5] => Ãgile
[4] => Ägile
)
とnatsort($配列)を使用しました:
Array
(
[2] => Àgile
[1] => Ágile
[3] => Âgile
[5] => Ãgile
[4] => Ägile
[0] => Agile
[6] => Test
)
PHP 5で正しい結果の順序(0,1,2,3,4,5,6)を返す関数を実装するにはどうすればよいですか?すべてのマルチバイト文字列関数(mbstring、iconv、...)は私のシステムで利用可能です。
EDIT:キーではなく値をnatsort()したいのですが、明示的にキーを定義していて、sort()の代わりにasort()を使用している唯一の理由は、ここでユニコード値のソートが間違っていました。
実際に必要なのは、Unicode照合アルゴリズム(UCA)です。私は[この回答では] Perlのデモンストレーションをしています(http://stackoverflow.com/questions/1097908/how-do-i-sort-unicode-strings-alphabetically-in-python/5024116#5024116)、ここで私は適切なライブラリを持っていない人のためにシェル呼び出し可能なバージョンを提供してください。多分それはここでも助けになるかもしれません。 – tchrist
@tchrist:UCAは私が探しているものです。ちょっとあなたの答えを詳しく見ていきます。 ;) –