PHPプログラムに関する各種メモ書き

配列(の配列)の文字コードを一括変換する

http://d.hatena.ne.jp/seto-san/20081203/1228274418

にありました。

以下引用。(クラスメソッドとして記述してあるので、通常の関数として使用したい場合は)

$target[$key] = $this->_mbConvertEncodingEx($val,$toEncoding,$fromEncoding);
↓
$target[$key] = _mbConvertEncodingEx($val,$toEncoding,$fromEncoding);

とするとよいでしょう。

/**
 * mb_convert_encoding()の拡張
 *
 * @param  mixed  $target       arrayかstring
 * @param  string $toEncoding   エンコード先
 * @param  string $fromEncoding エンコード元(default:null)
 * @return mixed  arrayが来たらarrayを、stringが来たらstringを
 */
function _mbConvertEncodingEx($target, $toEncoding, $fromEncoding = null)
{
  if (is_array($target)) {
    foreach ($target as $key => $val) {
      if (is_null($fromEncoding)) {
        $fromEncoding = mb_detect_encoding($val);
      }
      $target[$key] = $this->_mbConvertEncodingEx($val,$toEncoding,$fromEncoding);
    }
  } else {
    if  (is_null($fromEncoding)) {
      $fromEncoding = mb_detect_encoding($target);
    }
    $target = mb_convert_encoding($target, $toEncoding,$fromEncoding);
  }
  return $target;
}

関連エントリー

No.648
11/12 11:21

edit

配列