2017-04-04 8 views
2

ロケール設定でPHP配列をソートすることはできますか?ロケール設定でPHP配列をソートする?

これはセットアップです。

私はPHPで対話型ソートリストを作成しています。ユーザーの入力により、並べ替え(名前、居住地など)を指示する多数のカテゴリ(列)のうちの1つを作成することができます。これは私がarray_multisort()機能を使って解決しました。

次のハードル。リストはスウェーデン語であり、ユーザーはスウェーデン語のアルファベット順を期待します。abcdefghijklmnopqrstuvxyz å ä ö。現在、インタプリタは、アルファベット順ではなく、å ä öをソートし、 "a"の前に配置します。どのように治療する?

setlocale(LC_COLLATE, "sv_SV")の機能に関する一部の情報が見つかりましたが、レビューは賞賛されず、array_multisort()でどのように使用できるのか分かりませんでした。それをできる?もしそうなら、どのように? PHPの中に別の方法がありますか?

スウェーデンのソート順が適用されているスウェーデンのウェブサイトには何らかの方法が必要です。それはPHPで行うことができますか?

答えて

1

array_multisort()の3番目のパラメータとしてSORT_LOCALE_STRINGを使用してください。 PHPの宣言は次のように言っています:

SORT_LOCALE_STRING - 項目を現在のロケールに基づいて文字列として比較します。それはにsetlocaleを使用して変更することができるロケールを使用して()

例:

$result=array_multisort($input_array, SORT_ASC, SORT_LOCALE_STRING); 
0

申し訳ありません。これは私が思った問題ではありませんでした。私のコードに書かれたテキストは正しく並べ替えられます(äはåより前に間違って並べ替えられますが、それは仕様(?)のバグのようです)。

とにかく、問題は明らかに文字エンコーディングにあります。コンタクトフォーム7のデータベース(Wordpressプラグイン)から問題が発生したときにテキストが取り出されます。おそらくそれは別のエンコーディングを持ち、変換が必要です。

ありがとうございます。

関連する問題