絵文字
このブログを、携帯の絵文字に対応させてみた。
こんな風に表示されます。
絵文字を扱う方法は、基本的な考え方は以前書いた内容のとおりです。ただ、ブログのように「記事を編集できるプログラム」の場合は一筋縄では行きません。 PCでアクセスすると絵文字は画像で表示されるのですが、これがinputタグ内に挿入されると表示が乱れる問題があります。具体的には
<input type="text" name="example" size="50" value="絵文字のある文章<img src="/img/i/63647.gif" alt="" border="0" width="12" height="12" />" />
こんなHTMLになってしまうので、絵文字部分のタグをエスケープするなど、何らかの対処を行う必要があります。
対処方法として、「フォーム内に割り当てる文字に対しては、あらかじめ絵文字をWebコードに置換してからテンプレートに割り当てる」は簡単ですが、できればテンプレート側で絵文字のことは意識しなくてもいい仕組みにしたい…。
…という訳で色々悩んだ結果、画面にデータを出力する直前に「出力するHTMLの内容を調べて、入力欄内に絵文字用の画像タグがあれば、Webコードに置き換える」という処理を入れてみました。具体的には、PHP側で
- 出力内容に
value="●●●"
という箇所があれば、●
の部分の絵文字をWebコードに置換 - 出力内容にtextareaタグがあれば、その内容の絵文字をWebコードに置換
- 投稿データを受け取るときはWebコードとして受け取る
と処理を行うようにしてみました。
正規表現のコードに少し苦戦したけど、問題なく動作しているようです。ただ、何とも露骨な手段なので、何か問題が発生しないかしばらく自分のブログでテストしてみます。