Text_Pictogram_Mobileを読んでみた。

なんとなくXdebugでプロファイルをとってみたら、絵文字変換に半分以上持っていかれていたので絵文字変換を高速化したいなと思い動きだしました。
現在はMobilePictogramConverterをPHP5対応させたものを使っているのですが、他のライブラリも見ておこうと思い、絵文字変換id:Yudoufuさんがメンテしている絵文字変換ライブラリText_Pictogram_Mobileのtrunkコードを読んでみました。

基本的には下図のようなフローになっていました。

イテレータによって文字コードごとのマルチバイトの扱いと外字領域判定を吸収しています。また、1つの文字列中に複数のキャリアの絵文字が混在している状況に対応しているようで、1文字ごとにどこの絵文字か判定していました。

ざっと読んでみて、次のような問題点が分かりました。

  1. 絵文字判定がイテレータの内と外にある
  2. イテレーション前にbin2hexしているのが無駄
  3. 文字参照に非対応

また、高速化を図るのであればマルチバイト文字列のイテレータをextensionにするのがいいのかなと思いました。そうでなくても、実はmb_strlenとmb_strsubを組み合わせればもっと簡単にイテレーションできる気がします。

ところで、trunkの最後の更新が去年の1月なんですけど、開発は再開されるんですか?