PHPで携帯サイトを構築することになったのですが、携帯の小さい画面でPCサイトと同様の文字を
表示するとわずらわしくてしょうがありません。
そこで絵文字を使って表現することにしたのですが、携帯のキャリアごとに絵文字のコードがあるんですよね。
そこで絵文字変換スクリプトを作ってみました。
表示するとわずらわしくてしょうがありません。
そこで絵文字を使って表現することにしたのですが、携帯のキャリアごとに絵文字のコードがあるんですよね。
そこで絵文字変換スクリプトを作ってみました。
1.まず絵文字配列を格納したincludeファイルを作成します。
$pic_char_array = array(
array("No","絵文字タイトル","DOCOMO用コード","au用コード","softbank用コード1","softbank用コード2","softbank用コード3","softbank用コード4","softbank用コード5")
);
※softbank用は一部特殊文字を使っているので1文字ずつをord()関数を使って格納します。
2.携帯キャリア振分スクリプトを書きます。
//携帯振分関数 ===================
function mobile_type_set()
{
$UsrAgt = $_SERVER{'HTTP_USER_AGENT'};
if (substr_count($UsrAgt,"DoCoMo")) {
$user_agent = 'd';
}
elseif(substr_count($UsrAgt,"SoftBank")) {
$user_agent = 's';
}
elseif(substr_count($UsrAgt,"vodafone")) {
$user_agent = 's';
}
elseif(substr_count($UsrAgt,"UP.Browser")) {
$user_agent = 'a';
}
else{
$user_agent = 's';
}
return $user_agent;
}
3.次に1で作成したincludeファイルを読み込んで変換処理スクリプトを書きます。
// 携帯用絵文字変換関数 ======================================
$UA:2で作成した携帯キャリア判別の識別子
$char_code:今回はDOCOMO用のコードを引数に設定しています。
返り値:絵文字タグ
function mobile_pic_char($ua, $char_code)
{
require ('【1で作成したファイル】');
foreach($pic_char_array as $key => $element){
if($element){
if($element[4] == $char_code){
$target_key = $key;
break;
}
}
}
if($target_key){
switch($ua){
case 'd'://DOCOMO用
// DOCOMO用は特殊タグを前後に挟む
return "&#x".$pic_char_array[$target_key][2].";";
break;
case 's'://SoftBank用
if($pic_char_array[$target_key][7]){
// softbankの場合は、chr()関数で文字を戻す
return chr($pic_char_array[$target_key][7]).
chr($pic_char_array[$target_key][8]).
chr($pic_char_array[$target_key][9]).
chr($pic_char_array[$target_key][10]).
chr($pic_char_array[$target_key][11]);
}
else{
return FALSE;
}
break;
case 'a'://au用
// au用は専用タグで囲む
return "<img localsrc=\"".$pic_char_array[$target_key][5]."\">";
break;
default:
break;
}
}
return FALSE;
}
あとは、絵文字を表示したい箇所にmobile_pic_char()関数を埋め込むだけです。
$pic_char_array = array(
array("No","絵文字タイトル","DOCOMO用コード","au用コード","softbank用コード1","softbank用コード2","softbank用コード3","softbank用コード4","softbank用コード5")
);
※softbank用は一部特殊文字を使っているので1文字ずつをord()関数を使って格納します。
2.携帯キャリア振分スクリプトを書きます。
//携帯振分関数 ===================
function mobile_type_set()
{
$UsrAgt = $_SERVER{'HTTP_USER_AGENT'};
if (substr_count($UsrAgt,"DoCoMo")) {
$user_agent = 'd';
}
elseif(substr_count($UsrAgt,"SoftBank")) {
$user_agent = 's';
}
elseif(substr_count($UsrAgt,"vodafone")) {
$user_agent = 's';
}
elseif(substr_count($UsrAgt,"UP.Browser")) {
$user_agent = 'a';
}
else{
$user_agent = 's';
}
return $user_agent;
}
3.次に1で作成したincludeファイルを読み込んで変換処理スクリプトを書きます。
// 携帯用絵文字変換関数 ======================================
$UA:2で作成した携帯キャリア判別の識別子
$char_code:今回はDOCOMO用のコードを引数に設定しています。
返り値:絵文字タグ
function mobile_pic_char($ua, $char_code)
{
require ('【1で作成したファイル】');
foreach($pic_char_array as $key => $element){
if($element){
if($element[4] == $char_code){
$target_key = $key;
break;
}
}
}
if($target_key){
switch($ua){
case 'd'://DOCOMO用
// DOCOMO用は特殊タグを前後に挟む
return "&#x".$pic_char_array[$target_key][2].";";
break;
case 's'://SoftBank用
if($pic_char_array[$target_key][7]){
// softbankの場合は、chr()関数で文字を戻す
return chr($pic_char_array[$target_key][7]).
chr($pic_char_array[$target_key][8]).
chr($pic_char_array[$target_key][9]).
chr($pic_char_array[$target_key][10]).
chr($pic_char_array[$target_key][11]);
}
else{
return FALSE;
}
break;
case 'a'://au用
// au用は専用タグで囲む
return "<img localsrc=\"".$pic_char_array[$target_key][5]."\">";
break;
default:
break;
}
}
return FALSE;
}
あとは、絵文字を表示したい箇所にmobile_pic_char()関数を埋め込むだけです。
【WEB開発】コメントする