HTML_Emoji/マニュアル/使い方 の変更点


#title(HTML_Emoji の使い方)

#contentsx


* 入出力の変換 [#u8dd5a31]

HTML_Emoji ライブラリは、次のような使い方をすることを想定しています。

- 入力された絵文字は UTF-8 に変換して保存
- SoftBank の端末や PC では、UTF-8 のまま表示
- その他の携帯では、Shift_JIS に変換して表示

入出力を Shift_JIS に統一したり、UTF-8 に統一することも可能ですが、
このようにするのが一番トラブルが少ないはずです。


* 簡単な使い方 [#x11157d4]

フォームから入力された絵文字の混じったデータは、
[[Input>../フィルタ#Input]] というフィルタを通すことによって、
UTF-8 に変換することができます。

#geshi(php){{
// HTML_Emoji ライブラリの読み込み
require_once 'HTML/Emoji.php';

// 現在の端末用の HTML_Emoji オブジェクトを作成
$emoji = HTML_Emoji::getInstance();

// 入力データを UTF-8 に変換
$text = $emoji->filter($text, 'input');

// データを保存
......
}}

また、絵文字を含んだテキストを出力する際には、
[[Output>../フィルタ#Output]] というフィルタを通すことによって、
現在の端末に適した形に変換することができます。

#geshi(php){{
// HTML_Emoji ライブラリの読み込み
require_once 'HTML/Emoji.php';

// 現在の端末用の HTML_Emoji オブジェクトを作成
$emoji = HTML_Emoji::getInstance();

// PC で表示する際に用いる画像ファイルの URL を指定
$emoji->setImageUrl('images/');

// データの読み込み
$text = ......

// 現在の端末で表示するのに適した形にデータを変換
$text = $emoji->filter($text, 'output');
}}

[[isSjisCarrier()>../メソッド#isSjisCarrier]] メソッドは、
docomo や au の携帯ならば true を、SoftBank の携帯や PC ならば false を返します。
このメソッドを用いると、次のように場合分けの処理を書くことができます。

#geshi(php){{
// 端末の種類に応じて、適切な header を出力
if ($emoji->isSjisCarrier()) {
    header('Content-Type: text/html; charset=Shift_JIS');
} else {
    header('Content-Type: text/html; charset=UTF-8');
}
}}

多くの場合は、これだけで絵文字を扱うことができます。


* もう少し詳しい説明 [#rc7e2938]

上で説明した Input, Output フィルタは、
実際には次のように HTML_Emoji のいくつかのメソッドを順番に呼び出しています。

- Input フィルタ
#geshi(php){{
// 入力データが Shift_JIS ならば UTF-8 に変換
if ($emoji->isSjisCarrier()) {
    $text = $emoji->convertEncoding($text, 'UTF-8', 'SJIS');
}

// 数値文字参照の絵文字が含まれていたら UTF-8 の絵文字に変換
$text = $emoji->filter($text, array('DecToUtf8', 'HexToUtf8'));
}}

- Output フィルタ
#geshi(php){{
// 他キャリアの UTF-8 の絵文字を、現在の端末で表示できる形に変換
$text = $emoji->convertCarrier($text);

// Shift_JIS で表示すべき端末ならば Shift_JIS に変換
if ($emoji->isSjisCarrier()) {
    $text = $emoji->convertEncoding($text, 'SJIS', 'UTF-8');
}
}}

Input, Output フィルタを使う代わりに、これらのメソッドを直接呼ぶようにすれば、
絵文字の変換処理をより細かくコントロールすることができます。
他にも様々なメソッドやフィルタが用意されていますので、
詳しくは [[HTML_Emoji のメソッド>../メソッド]] や [[HTML_Emoji のフィルタ>../フィルタ]]
のページを参照して下さい。

また、配布ファイルの examples ディレクトリに幾つかのサンプルが含まれていますので、
そちらも参考にして下さい。