HTML_Emoji/マニュアル/メソッド の変更点


#title(HTML_Emoji のメソッド)

#contentsx


* getInstance &aname(getInstance); [#x2d9a4dd]

現在の端末用の HTML_Emoji オブジェクトを返します。
キャリアは端末の User Agent から自動的に判別されます。

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

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

また、キャリア名を引数に指定することもできます。
キャリア名としては、次のような文字列を認識します。
大文字・小文字は区別しません。

:docomo の携帯		|docomo, i-mode, imode, willcom, emobile
:au の携帯		|au, kddi, ezweb
:au へのメール送信用	|aumail
:SoftBank の携帯	|softbank, disney, vodafone
:SoftBank の 2G 携帯	|j-phone, jphone
:iPhone			|iphone

これ以外の文字列を指定した場合には、
PC 用の HTML_Emoji オブジェクトが返されます。


* setImageUrl [#k1e1f0e8]

PC では画像ファイルを用いて絵文字を表示しますが、
その画像ファイルが置かれている URL を指定します。

#geshi(php){{
// images ディレクトリの画像ファイルを用いるように設定
$emoji->setImageUrl('images/');
}}

指定する値は、images/ のような相対 URL でも構いませんし、
/ や http:// で始まる絶対 URL でも構いません。
相対 URL の場合は、
ブラウザでアクセスしているファイル (index.php など) の位置が基準となります。


* setConversionRule [#g18173b1]

他キャリアの絵文字を変換する際のルールを指定します。
現在のバージョンでは、次のようなルールを選択できます。

:default|
各キャリアが、他キャリア宛てのメールの絵文字を変換しているのと同じルール

:kokogiko|
絵文字が〓に変換されることがないように、「ここギコ!」さんが独自に作成した変換ルール


* disableEscaping [#p012056d]

[[convertCarrier()>#convertCarrier]] メソッドで他キャリアの絵文字を変換する際に、
デフォルトでは
[[htmlspecialchars()>http://php.net/htmlspecialchars]]
関数でエスケープするようにしてありますが、その機能を無効にします。

#geshi(php){{
// 絵文字をエスケープしないで出力するように設定
$emoji->disableEscaping();

// 絵文字をエスケープして出力するように設定
$emoji->disableEscaping(false);
}}


* useHalfwidthKatakana [#j23d72c7]

[[convertCarrier()>#convertCarrier]] メソッドで他キャリアの絵文字を変換する際に、
デフォルトでは全角カナを用いますが、代わりに半角カナを用いるよう設定します。

#geshi(php){{
// 他キャリアの絵文字を変換する際に、半角カナを用いるよう設定
$emoji->useHalfwidthKatakana();

// 他キャリアの絵文字を変換する際に、全角カナを用いるよう設定
$emoji->useHalfwidthKatakana(false);
}}

ただし、絵文字以外の部分を半角カナに変換することはしません。
必要な場合は、[[mb_convert_kana()>http://php.net/mb_convert_kana]] 関数を用いて自分で変換して下さい。


* filter [#na30a956]

各種フィルタを用いて、絵文字の変換を行います。
フィルタの詳細については、[[HTML_Emoji のフィルタ>../フィルタ]] のページをご覧下さい。

フィルタ名は、String か Array 型の変数として第2引数に指定して下さい。
フィルタ名の最初の文字は小文字にしても構いません。
Array 型の場合は、複数のフィルタが順番に適用されます。
例えば以下の例では、まず DecToUtf8 フィルタが適用され、
その後に HexToUtf8 フィルタが適用されます。

#geshi(php){{
// 絵文字の混じった Shift_JIS のテキストを UTF-8 に変換
$text = $emoji->filter($text, 'SjisToUTf8');

// 数値文字参照の絵文字を UTF-8 の絵文字に変換
$text = $emoji->filter($text, array('DecToUtf8', 'HexToUtf8'));
}}


* convertEncoding &aname(convertEncoding); [#z6f0e7fe]

PHP の [[mb_convert_encoding()>http://php.net/mb_convert_encoding]]
関数を絵文字に対応させたメソッドです。
指定できるエンコーディングは次の通りです。
ただし、SJIS-win や ISO-2022-JP-MS を指定しなくても、
機種依存文字も変換されるようにしてあります。

- UTF-8
- SJIS, SJIS-win
- JIS, ISO-2022-JP, ISO-2022-JP-MS

これらのうち、次のようなエンコーディング間であれば、絵文字の変換に対応しています。

- UTF-8 → SJIS
- UTF-8 ← SJIS
- UTF-8 ← ISO-2022-JP

これ以外の変換を指定した場合は、絵文字に対応していない通常の
[[mb_convert_encoding()>http://php.net/mb_convert_encoding]]
関数が呼び出されます。

なお、[[Utf8ToSjis>../フィルタ#Utf8ToSjis]],
[[SjisToUtf8>../フィルタ#SjisToUtf8]],
[[JisToUtf8>../フィルタ#JisToUtf8]]
の各フィルタを用いても、同じ処理を行うことができます。


* convertCarrier &aname(convertCarrier); [#nf195a4b]

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

なお、[[Carrier>../フィルタ#Carrier]] フィルタを用いても、同じ処理を行うことができます。


* hasEmoji [#dc0cd633]

テキストに3キャリアの UTF-8 の絵文字が含まれているかどうかを判定します。
含まれていた場合には true を、含まれていなかった場合には false を返します。

#geshi(php){{
// $text に3キャリアの UTF-8 の絵文字が含まれていたら、以下の処理を実行
if ($emoji->hasEmoji($text)) {
    ......
}
}}

Shift_JIS や数値文字参照の絵文字には対応していませんので、
必要ならば事前に UTF-8 の絵文字に変換しておいて下さい。


* removeEmoji &aname(removeEmoji); [#m5331554]

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

#geshi(php){{
// $text に含まれている、3キャリアの UTF-8 の絵文字を削除
$text = $emoji->removeEmoji($text);
}}

Shift_JIS や数値文字参照の絵文字には対応していませんので、
必要ならば事前に UTF-8 の絵文字に変換しておいて下さい。

なお、[[Remove>../フィルタ#Remove]] フィルタを用いても、同じ処理を行うことができます。


* isMobile &aname(isMobile); [#xd4b3517]

現在アクセスしている端末が、携帯電話かどうかを判定します。
携帯電話の場合は true を、それ以外の場合は false を返します。
携帯電話でも、フルブラウザやスマートフォンの場合は false を返します。

この動作は、[[mobile>../プロパティ#mobile]] プロパティを設定することで変更できます。

最近は携帯電話とスマートフォンの境界がはっきりしないため、
このメソッドだけを用いて処理を振り分けるのは難しいかもしれません。
もっと細かく振り分けたい場合は、
[[Net_UserAgent_Mobile>http://pear.php.net/package/Net_UserAgent_Mobile/]]
などのライブラリを併用して下さい。


* isSjisCarrier &aname(isSjisCarrier); [#p4ed48e5]

Shift_JIS で表示すべき端末かどうかを判定します。
docomo や au の携帯の場合には true を、それ以外の場合は false を返します。

この動作は、[[utf8>../プロパティ#utf8]] プロパティを設定することで変更できます。


* isUtf8Carrier &aname(isUtf8Carrier); [#t2bcfe5a]

UTF-8 で表示すべき端末かどうかを判定します。
SoftBank の携帯や PC の場合には true を、それ以外の場合は false を返します。

この動作は、[[utf8>../プロパティ#utf8]] プロパティを設定することで変更できます。


* getCarrier [#se7cc745]

端末のキャリア名に相当する文字列を返します。
返される値は次のいずれかです。

- docomo
- au
- softbank
- iphone
- pc

WILLCOM やイー・モバイルの端末は、docomo の携帯として扱われます。
また、絵文字を使えない端末はすべて PC として扱われますが、
これには次のようなものが含まれます。

- パソコンのブラウザ
- 携帯電話のフルブラウザ
- Android や Windows Mobile のスマートフォン
- iPhone OS 2.2 未満の iPhone, iPod touch

特殊なケースとして、SoftBank 2G 携帯の場合は jphone という文字列を返します。
ただし、SoftBank 2G 携帯のサービスはすでに終了していますので、
[[getInstance()>#getInstance]] メソッドの引数に 'jphone' を指定したり、
[[FireMobileSimulator>http://firemobilesimulator.org/]]
で SoftBank 2G 携帯をエミュレートしたりした場合のみ、この文字列が返されます。


* getRegexEmoji [#k1e13c26]

3キャリアの絵文字を表す正規表現を返します。

このメソッドは、フィルタを自作するなどの特別な場合を除き、
通常は使用する必要はありません。


* getRegexOthers [#ed1ffea6]

他キャリアの絵文字を表す正規表現を返します。

このメソッドは、フィルタを自作するなどの特別な場合を除き、
通常は使用する必要はありません。


* decodeNumericentity [#rff9c34c]

PHP の [[mb_decode_numericentity()>http://php.net/mb_decode_numericentity]]
関数の[[バグ>http://bugs.php.net/bug.php?id=40685]]を修正したメソッドです。

このメソッドは、フィルタを自作するなどの特別な場合を除き、
通常は使用する必要はありません。