多重配列のエンコード

| コメント(0)
PHP+Smartyで携帯サイトを制作すると絶対にぶつかる問題。

「文字コードの変換」

パソコン用であれば、「UTF-8」で統一しておけば何も問題ないのだが
携帯サイトに関しては、基本的に「SHIFT-JIS」

ドコモの一部機種とソフトバンクは、「UTF-8」対応しているが
auは対応しておらず、すべての携帯で見れる文字コードは
今のところ「SHIFT-JIS」のみ。

ただし、PHP+Smartyは「UTF-8」か「EUC」しか対応していないので
PHPは上記どちらかで保存し、ビュー用のテンプレートファイルを「SHIFT-JIS」で保存。

そして、アウトプットさせるデータを出力時に「SHIFT-JIS」にエンコード。
これでうまくいくはずが・・・文字コードはハマると結構面倒なんだなぁ(泣)

今回気がついたことは、エンコードの関数「mb_convert_encoding」って
配列に対応してないのね・・・(><)

ということで、多重配列に対応したエンコード関数を作ってみました。
これで携帯でうまく表示されました!

/* -------------------------------------------
 文字列(配列)のエンコード
 $param = ターゲットとなる配列もしくは文字列
 $to_encoding = 変換後の文字コード
 $from_encoding = 変換前の文字コード(デフォルトはauto)
------------------------------------------- */
function arr_mb_convert_encoding($param, $to_encoding, $from_encoding="auto"){
    if(is_array($param)){
        foreach($param as $key => $val){
            if(is_array($val)){
                foreach($val as $k => $v){
                    $param[$key][$k] = mb_convert_encoding($v, $to_encoding, $from_encoding);
                }//end foreach
            }else{
                $param[$key] = mb_convert_encoding($val, $to_encoding, $from_encoding);
            }//end if
        }//end foreach
    }else{
        $param = mb_convert_encoding($param, $to_encoding, $from_encoding);
    }//end if
    return $param;
}//end function


コメントする

ウェブページ

★過去に製作したウェブサイト(一部紹介)
イビキノン
いびきでよく眠れない方のサプリ
日本トレーラーハウス協会
トレーラーハウスの協会(JTHA)
トレーラーハウスデベロップメント
トレーラーハウスの製造・販売 シュミレーションゴルフのレンタル スクリーンゴルフのレンタル
健楽ショップ 【ボイスリッチEX】
声が出にくい症状の方に朗報
早稲田大学 スキー部
2007年 インカレ総合優勝!
NPO体験学習支援センター
ブナの植林100年計画実行中
AJC油汚染研究所
油ゲル化剤オイルフェンスの販売
ジャズシンガー 奥土居美可
NYで絶賛されたジャズボーカル