[PHP-users 31468] au の絵文字を変換
phpmyjob @ yahoo.co.jp
phpmyjob @ yahoo.co.jp
2007年 2月 15日 (木) 15:21:32 JST
auの絵文字を変換する際、以下のように文字をチェックするオーソドックスなや
り方
なのですが、なぜか以下の問題が発生します。
・ハートマークを送ると$char1(1バイト目)にEE、$char2(2バイト目)に82が入
る(通常だとF7B2) 参照:ttp://www.au.kddi.com/ezfactory/tec/spec/pdf/typeD.pdf
表示はSJISで内部はEUC-JPになります。
スクリプトは以下です。
$str = unpack("C*", $_POST["text"]);
$c = count($str);
for($i = 1;$i <= $c;$i++){
$char1 = $str[$i];
$char2 = $str[$i + 1];
if((($char1 == 0xF3 || $char1 == 0xF6 || $char1 == 0xF7) && (($char2 >=
0x40 && $char2 <= 0x7E) || ($char2 >= 0x80 && $char2 <= 0xFC))) ||
($char1 == 0xF4 && (($char2 >= 0x40 && $char2 <= 0x7E) || ($char2 >=
0x80 && $char2 <= 0x8D)))){
$d = strval(dechex($char1)).strval(dechex($char2));
$buf .= "?".strtoupper($d).";";
$i++;
}else if(($char1 >= 0x81 && $char1 <= 0x9F) || ($char1 >= 0xE0 &&
$char1 <= 0xFC)){
$buf .= pack("C*", $char1, $char2);
$i++;
}else{
$buf .= pack("C", $char1);
}
return $buf;
}
通常のようにF7B2の形で受け取りたいのです。
ご教示お願い致します。
--------------------------------------
Start Yahoo! Auction now! Check out the cool campaign
http://pr.mail.yahoo.co.jp/auction/
PHP-users メーリングリストの案内