配列のキーの文字コードを変換する。

汎用フォームなどを作成する場合に、formのname属性を日本語にする場合がある。それだけであれば問題ないのだが、PC、携帯の両方から、つまり文字コードがutf8とsjisであったりすると困る。

いろいろ悩んだあげく、配列をキーと値に一旦分割し、それぞれ文字コード変換をしてから再び結合するという力業でなんとかなった。ただし1次元配列の場合だけだけど。

$to = 'utf8';
$from = 'sjis';
$arg = array('配列1'=>'値1', '配列2'=>'値2', '配列3'=>'値3');//sjisでPOSTされる配列。
cnvertEncoding($to, $from, $arg);
function cnvertEncoding($to, $from, $arg){
if(is_array($arg)){
$a = array_keys($arg);
$b = array_values($arg);
mb_convert_variables($to, $from, $a);
mb_convert_variables($to, $from, $b);
return array_combine($a, $b);
}else{
return mb_convert_encoding($arg, $to, $from);
}
}

そもそも、sjisでコーディングすること自体がちょっといやですが・・・

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA