sharapeco/kana-order

Create string that gives Japanese dictionary order from kana.

v2.0.0 2022-01-27 04:22 UTC

This package is auto-updated.

Last update: 2024-03-27 09:06:54 UTC


README

KanaOrder は項目を辞書順に並べるためのライブラリです。

入出力文字列は UTF-8 でエンコードされているもののみ扱えます。

使用方法

KanaOrder::get() は「すずめ」「ひよどり」など読みがなとして入力された文字列を引数として鳥、 strcmp など文字コードで文字列を比較する関数を使って比較した際、 辞書順となる文字列を出力する関数です。

example/example1.php を実行してみてください。 次のように辞書順に並んだ結果が出力されると思います。

かつ【勝つ】
カツ【カツ】
しいく【飼育】
シーク【シーク】
ジーク【ジーク】
しいくいん【飼育員】
ひよう【費用】
ひょう【雹】
びょう【鋲】
ぴょう【ぴょう】
ひょうい【憑依】
びよういん【美容院】
びょういん【病院】
ひようかん【費用感】
ひょうきん【剽軽】
ひよどり【鵯】

準拠している「辞書順」

このライブラリは Wikipedia の索引の配列に基づいて実装されています。

  1. 読みの五十音順とする。
  2. 清音・濁音・半濁音は、この順に並べる。
  3. 促音「っ」、拗音「ゃ」「ゅ」「ょ」はそれぞれ「つ」「や」「ゆ」「よ」の後に並べる。
  4. 小文字「ァ」「ィ」「ゥ」「ェ」「ォ」はそれぞれ「あ」「い」「う」「え」「お」の後に並べる。
  5. 長音符「ー」は直前の母音を表すものとし、それぞれ仮名の後に並べる。 例: 「コーヒー」は「こおひい」と見なす。
  6. ひらがなとカタカナは、この順に並べる。

プロジェクト‐ノート:索引/配列順 - Wikipedia

Collator との違い

PHP に同梱されている intl 拡張モジュールに含まれる Collator でも同様のことが実現できますが、 「辞書順」の定義が若干異なっています。

$collator = new Collator('ja_JP');
$sortKey = $collator->getSortKey('すずめ');

example/example1.php の例では次のように並び順が異なります。

KanaOrder Collator
かつ カツ
カツ かつ
しいく シーク
シーク しいく
ジーク ジーク
しいくいん しいくいん
ひよう ひょう
ひょう ひよう
びょう びょう
ぴょう ぴょう
ひょうい ひょうい
びよういん びょういん
びょういん びよういん
ひようかん ひようかん
ひょうきん ひょうきん
ひよどり ひよどり