今日は久しぶりに絵文字の続きをやりたいと思います。
これまで絵文字を表示する方法として次のパターンがありますが・・・
1.3キャリアそれぞれのHTMLテンプレートを用意して、それぞれのキャリアに応
じた絵文字を書く方法。
2.キャリアごとに絵文字の配列を作り、キャリアに応じた絵文字を表示する方法
3.iモード用の絵文字を書いたテンプレートを用意して、それをezweb、Softbank
用に変換して出力させる方法
4.絵文字用にタグを作っておいて、タグから絵文字に変換して出力する方法。
これまでは1と2の方法を紹介しました。
今日は3のiモード用の絵文字を書いたテンプレートを用意してキャリアに応じた
絵文字に変換する方法です。
とても簡単なサンプルを作ってみます。
<?php
/**
* DoCoMo端末の確認
*
*/
function is_docomo(){
// ユーザーエージェントの取得
$agent = $_SERVER['HTTP_USER_AGENT'];
// キャリアの判別
if(ereg("^DoCoMo", $agent) && !eregi( "ISIM", $agent )){
return TRUE;
}else {
return FALSE;
}
}
/**
* au端末の確認
*
*/
function is_au(){
// ユーザーエージェントの取得
$agent = $_SERVER['HTTP_USER_AGENT'];
// キャリアの判別
if(ereg("^J-PHONE|^Vodafone|^SoftBank", $agent)){
return FALSE;
}
// キャリアの判別
if(strpos($agent,"KDDI-") !== FALSE || strpos($agent,"UP.Browser/")
!== FALSE){
return TRUE;
} else {
return FALSE;
}
}
/**
* Softbank端末の確認
*/
function is_softbank(){
// ユーザーエージェントの取得
$agent = $_SERVER['HTTP_USER_AGENT'];
// キャリアの判別
if(ereg("^J-PHONE|^Vodafone|^SoftBank", $agent)){
return TRUE;
} else {
return FALSE;
}
}
/* iモードの絵文字をその他のキャリアの絵文字に変換 */
function conv_emoji($buffer){
$emoji_data_array[1] = array("?","","\x1B\$Gj\x0F");
$emoji_data_array[2] = array("?","","\x1B\$Gi\x0F");
$emoji_data_array[3] = array("?","","\x1B\$Gk\x0F");
$emoji_data_array[4] = array("?","","\x1B\$Gh\x0F");
if( is_au()){
// auの場合
foreach($emoji_data_array as $value){
$buffer = str_replace($value[0], $value[1], $buffer);
}
} elseif(is_softbank()){
// Softbankの場合
foreach($emoji_data_array as $value){
$buffer = str_replace($value[0], $value[2], $buffer);
}
}
return $buffer;
}
header("Content-type: text/html; charset=Shift_JIS");
ob_start("conv_emoji");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>ProMobile Friday Blog</title>
</head>
<body>
絵文字のテストです<br />
?<br />
?<br />
?<br />
?<br />
</body>
</html>
<?php
ob_end_flush();
?>
記事のスペースの関係で今回使う絵文字のデータは4つだけにしています。
$emoji_data_array[1] = array("?","","\x1B\$Gj\x0F");
$emoji_data_array[2] = array("?","","\x1B\$Gi\x0F");
$emoji_data_array[3] = array("?","","\x1B\$Gk\x0F");
$emoji_data_array[4] = array("?","","\x1B\$Gh\x0F");
絵文字のデータはDoCoMo,au,Softbankの順番で絵文字用データを作ります。
最初のDoCoMoのデータは文字化けしているかもしれませんが、それぞれ、晴れ、
曇り、雨、雪の絵文字が入っています。
DoCoMoで配布しているi絵文字またはバイナリエディタで入れます。
auはUnicode、SoftbankはWebコードを入れています。
HTMLの部分にDoCoMo用の絵文字を入れます。
同じ様にi絵文字またはバイナリエディタで入れます。
前回紹介した出力関数を使って文字の置き換えをします。
ob_start関数でconv_emoji関数をコールバックして端末判定をして・・・
auとSoftbankの場合はDoCoMoの絵文字をそれぞれのキャリアに変換して出力します。
プログラムを作ってアップロードします。
DoCoMoとauとSoftbankの3キャリアの端末で確認してみます。
おお~絵文字が表示されました。
DoCoMo(N-01A)

au(W41K)

Softbank(923SH)

元々DoCoMoの絵文字を入れているのでDoCoMoは絵文字が出るのが当たり前ですが、
au、Softbankでも変換されて表示されました。
今日はこれでおしまいです。














コメントする