HTML_Emoji/マニュアル/フィルタ の変更点


#title(HTML_Emoji のフィルタ)

HTML_Emoji ライブラリでは、絵文字の変換を行う様々なフィルタを用意しています。
新しいフィルタを作ることによって、
簡単に HTML_Emoji の機能を拡張することができます。

#contentsx


* Carrier &aname(Carrier); [#w63eabe2]

他キャリアの UTF-8 の絵文字を、現在の端末で表示できる形に変換します。
PC の場合は <img> タグに変換します。

なお、[[convertCarrier()>../メソッド#convertCarrier]] メソッドを用いても、同じ処理を行うことができます。


* DecToUtf8 [#x576463a]

テキストに含まれている 10進数値文字参照の絵文字を、
UTF-8 の絵文字に変換します。


* DocomoDefaultColor [#be546553]
* DocomoDefaultColor &aname(DocomoDefaultColor); [#be546553]

docomo の携帯では、<body style="color:black">
のような設定をしていると、絵文字も黒で表示されてしまいますが、
それを強制的にデフォルトの色で表示するようにします。
このフィルタは次のようなタイミングで使って下さい。
このフィルタは、docomo の UTF-8 の絵文字に対してのみ作用するので、
次のようなタイミングで用いて下さい。

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

// docomo の絵文字を、強制的にデフォルトの色で表示
if ($emoji->getCarrier() == 'docomo') {
    $text = $emoji->filter($text, 'DocomoDefaultColor');
}

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

実際の処理としては、
XHTML 対応機種の場合は <span style="color:red">...</span> のようなタグで、
そうでない場合は <font color="red">...</font> のようなタグで絵文字を囲んでいます。
そのため、このフィルタを textarea 内のデータに適用すると、
表示が壊れてしまうので注意して下さい。

このフィルタは使い勝手があまり良くないと思いますので、<body style="color:black">
のように設定するのをやめる方が楽かもしれません。


* DocomoDefaultColorHtml [#wf94fc94]

[[DocomoDefaultColor>#DocomoDefaultColor]] フィルタの HTML 専用版です。
docomo の UTF-8 の絵文字を、<font color="red">...</font> のようなタグで囲みます。


* DocomoDefaultColorXHtml [#w8771c73]

[[DocomoDefaultColor>#DocomoDefaultColor]] フィルタの XHTML 専用版です。
docomo の UTF-8 の絵文字を、<span style="color:red">...</span> のようなタグで囲みます。


* HexToUtf8 [#b345ee08]

テキストに含まれている 16進数値文字参照の絵文字を、
UTF-8 の絵文字に変換します。


* Input &aname(Input); [#yb1e2d67]

いくつかのフィルタを順番に呼び出し、
フォームからの入力を UTF-8 のテキストに変換します。
具体的には、次のような処理を行います。

- 入力データが Shift_JIS ならば UTF-8 に変換
- 数値文字参照の絵文字を UTF-8 の絵文字に変換

入力が Shift_JIS かどうかは、
[[isSjisCarrier()>../メソッド#isSjisCarrier]] メソッドの返り値によって判定しています。
しかし、悪意を持ったユーザーが PC から UTF-8 以外のデータを送信してくるようなことも考えられますので、
実際に運用する際には、[[mb_check_encoding()>http://php.net/mb_check_encoding]]
関数や [[mb_detect_encoding()>http://php.net/mb_detect_encoding]]
関数を使って、入力データのチェックをすることも行うべきです。


* JisToUtf8 &aname(JisToUtf8); [#b9e67885]

絵文字の混じった ISO-2022-JP のテキストを UTF-8 に変換します。
受信した au のメールに含まれる絵文字を処理したい時に使って下さい。

なお、[[convertEncoding()>../メソッド#convertEncoding]] メソッドを用いても、同じ処理を行うことができます。


* Output &aname(Output); [#v6404f30]

いくつかのフィルタを順番に呼び出し、
現在の端末で表示するのに適した形にテキストを変換します。
具体的には、次のような処理を行います。

- 他キャリアの UTF-8 の絵文字を、現在の端末で表示できる形に変換
- Shift_JIS で表示すべき端末ならば Shift_JIS に変換


* Remove &aname(Remove); [#gdee9245]

テキストに含まれている、3キャリアの UTF-8 の絵文字を削除します。

なお、[[removeEmoji()>../メソッド#removeEmoji]] メソッドを用いても、同じ処理を行うことができます。


* SjisToUtf8 &aname(SjisToUtf8); [#x1ca0a3b]

絵文字の混じった Shift_JIS のテキストを UTF-8 に変換します。

なお、[[convertEncoding()>../メソッド#convertEncoding]] メソッドを用いても、同じ処理を行うことができます。


* Utf8ToDec [#t8410305]

テキストに含まれている UTF-8 の絵文字を、10進数値文字参照に変換します。


* Utf8ToForm [#d89c4461]

絵文字の混じった UTF-8 のテキストを、フォームで編集できる形に変換します。
具体的には、テキストに含まれている UTF-8 の絵文字のうち、
他キャリアの絵文字だけを 16進数値文字参照に変換します。
掲示板や Wiki に書き込まれた絵文字を後で修正するような時に、
このフィルタを使って下さい。


* Utf8ToHex [#e1ba4c5a]

テキストに含まれている UTF-8 の絵文字を、16進数値文字参照に変換します。


* Utf8ToSjis &aname(Utf8ToSjis); [#x631b894]

絵文字の混じった UTF-8 のテキストを Shift_JIS に変換します。

なお、[[convertEncoding()>../メソッド#convertEncoding]] メソッドを用いても、同じ処理を行うことができます。