Yahoo! API ルビ振りの精度 と はてなブログ五十音順インデックスその後

Yahoo! API ルビ振りの精度 と はてなブログ五十音順インデックスその後

  1. Yahoo! API を使って「漢字仮名交じり文」を「ひらがな」に変換する
  2. はてなブログのタイトルにふりがなを振り、php 配列に格納する
  3. はてなブログの記事の五十音順タイトル一覧を作る

の三記事で、はてなブログの五十音順タイトル一覧を作ってきたのですが、Yahoo! API の「ルビ振り」に2,3問題がありました。

Yahoo! API ルビ振りの精度

「ゼロ」がひらがなにならない

「ゼロ・グラビティ」で試していますが、「ゼロ」だけでも同じです。

object(SimpleXMLElement)#1 (1) {
  ["Result"]=>
  object(SimpleXMLElement)#2 (1) {
    ["WordList"]=>
    object(SimpleXMLElement)#4 (1) {
      ["Word"]=>
      array(3) {
        [0]=>
        object(SimpleXMLElement)#6 (1) {
          ["Surface"]=>
          string(6) "ゼロ"
        }
        [1]=>
        object(SimpleXMLElement)#5 (1) {
          ["Surface"]=>
          string(3) "・"
        }
        [2]=>
        object(SimpleXMLElement)#8 (3) {
          ["Surface"]=>
          string(15) "グラビティ"
          ["Furigana"]=>
          string(15) "ぐらびてぃ"
          ["Roman"]=>
          string(9) "gurabithi"
        }
      }
    }
  }
}

「十三」がひらがなにならない

「十三人の刺客」で試していますが、「十三」→「十三」、「十人」→「じゅうにん」、「三人」→「さんにん」、「十」→「十」となりますので、漢数字が絡みますとうまくひらがなにならない場合があるようです。

object(SimpleXMLElement)#1 (1) {
  ["Result"]=>
  object(SimpleXMLElement)#2 (1) {
    ["WordList"]=>
    object(SimpleXMLElement)#4 (1) {
      ["Word"]=>
      array(4) {
        [0]=>
        object(SimpleXMLElement)#6 (1) {
          ["Surface"]=>
          string(6) "十三"
        }
        [1]=>
        object(SimpleXMLElement)#5 (3) {
          ["Surface"]=>
          string(3) "人"
          ["Furigana"]=>
          string(6) "にん"
          ["Roman"]=>
          string(3) "nin"
        }
        [2]=>
        object(SimpleXMLElement)#7 (3) {
          ["Surface"]=>
          string(3) "の"
          ["Furigana"]=>
          string(3) "の"
          ["Roman"]=>
          string(2) "no"
        }
        [3]=>
        object(SimpleXMLElement)#9 (3) {
          ["Surface"]=>
          string(6) "刺客"
          ["Furigana"]=>
          string(9) "しかく"
          ["Roman"]=>
          string(6) "sikaku"
        }
      }
    }
  }
}

この2つ以外はうまくひらがなに変換され、五十音順に並べ替えることが出来ました。

はてなブログ五十音順インデックスその後

実際の「そんなには褒めないよ。映画評」での運用は、前回記事「はてなブログの記事の五十音順タイトル一覧を作るに一ヶ所変更を加えました。

タイトルに全角数字を使用したものがありましたので、インデックスに全角数字を追加しました。

// 五十音インデックス
$indexes = array(
    "数字" => "[0-9]", "英字" => "[a-zA-Z]",
    ↓
    "数字" => "[0-90-9]", "英字" => "[a-zA-Z]",

ちなみに、index の複数形は、この場合、indexes ではなく、indices が正しいようです。

index の複数、 "indices" か "indexes" のどっちをどう使うべきか – Togetterまとめ

ということで、五十音順タイトルのメニューが完成です。

ausnichts.hatenablog.jp