Carpe Diem

  Top > スポンサー広告> PHP > PHPでの日本語ソート [Collator]  

スポンサーサイト

-- - --/-- [--] - --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PHPでの日本語ソート [Collator]

2011 - 10/06 [Thu] - 13:23

PHPでHTMLを生成すると非常に便利であることを学びました。
その過程で「フォルダ名を取得してリンクとして生成」みたいなことをしたいときに、単純なsort()では日本語をうまくソート出来ません。漢字は難しいですが、ひらがなとカタカナ、及び濁点等はちゃんと合わせて欲しいものです。
そんなときに便利なのがintlモジュールでのCollatorを用いたソートです。多分PHPを入れた時にこのモジュールもインストールしてると思いますが、もし入っていなかったらSynapticか

$ sudo apt-get install php5-intl

でインストールできます。あれ?php-intlかな?

インストールしたら使い方は簡単で、
①オブジェクトの生成
②メソッドを使ってソート

でOKです。

①オブジェクトの生成
書き方は色々ありますが、以下のどれでもいいです。
$collator = Collator::create( 'ja_JP' );   // (static) create
$collator = collator_create( 'ja_JP' );    // 関数
$collator = new Collator( 'ja_JP' );       // __constr
uct()


②メソッドの使用

これは複数のメソッドが有り、メソッドによって特徴が異なります。また各メソッド書き方は2通りずつあります。先ほどと同じで、指定の書き方であればどちらでも同じです。

種類は具体的に
compare - 文字列の比較
collator_compare

sort - 文字列の並べ替え
collator_sort

asort - 連想配列の並べ替え
collator_asort

sortWithSortKeys - より高速な並べ替え
collator_sort_with_sort_keys

setStrength - 比較強度(レベル)を設定
collator_set_strength

getStrength - 比較強度(レベル)を取得
collator_get_strength


で、ソートとして基本的に使用するのは2~4番目です。

書き方は、$aをソートしたい要素として、
$collator->sort( $a );
collator_sort( $collator, $a );


の二通りです。引数の後ろに並べ替えの方法を指定できます。次の通りです。
$collator->sort( $a, Collator::SORT_REGULAR );    // デフォルト
$collator->sort( $a, Collator::SORT_NUMERIC );    // 数値として比較
$collator->sort( $a, Collator::SORT_STRING );     // 文字列として比較


以上です。最後に僕が使っている例として

$collator = Collator::create( 'ja_JP' )
$collator->sortWithSortKeys( $a, Collator::SORT_STRING );


となります。


ソース
PHP5.3のintl拡張モジュール - Collatorによる日本語文字列の並べ替え(ソート)
PHP5.3のintl拡張モジュール - Collatorオブジェクトの設定

コメントの投稿





管理者にだけ表示を許可する

 | ホーム | 

プロフィール

Cicatrice

Author:Cicatrice
備忘録

検索フォーム

カテゴリ

最新記事

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。