PHPのiconv関数がすごすぎる件について
UTF-8のデータを携帯サイトで表示しなければならなくなり試行錯誤の記録。
ご存知だと思うのですが携帯のサイトで利用できる文字コードはShift-JISになります。
そのようなわけでUTF-8 → SJISへの変換が必要になるのですが、UTF-8で表示できてSJISで表示できない文字があります。
たとえばフランス語などで使われているアクセント記号があります。
以下のようなeやaの上に何かがついている文字です。
théâtre
これを上手に変換するにはどうしたらよいか?
変換テーブルを作成して置換する。
下記のような関数を作成して置換する方法もありますが、もっとスマートな方法はないのかな?
function ascii_replace($message) {
$from = array("É","À","È","Ù","Â","Ê","Î","Ô","Û","Ë","Ï","Ü","Ç","Œ",
"à","è","ù","â","ê","î","ô","û","ë","ï","ü","ç","œ");
$to = array("E","A","E","U","A","E","I","O","U","E","I","U","C","OE",
"a","e","u","a","a","i","o","u","e","i","u","c","oe");
return str_replace($from, $to, $message);
}
iconv関数を使用することにしました。
PHPのインストール時に--with-iconvを忘れずに
iconv関数がすごいといえる理由
iconvがすごいといえるのは㈱や①②のような機種依存文字も(株)(1)(2)のように変換してくれるところです。