php多維數組轉碼

公司的老項目都是gbk編碼的,可是新項目都是utf-8編碼的。而項目之間交互涉及漢子不免就須要轉碼,普通字符串能夠之間利用iconv來轉碼,數組就比較麻煩。之前的同事也寫過數組轉碼的函數。 以下:數組

/**
 * 對全部數據類型進行轉碼
 * 
 * @param mixed $value
 *        	待轉碼變量
 * @param string $inCharset
 *        	原編碼, gbk
 * @param string $outCharset
 *        	目標編碼, utf-8
 * @return mixed 轉碼後的數據
 */
function iconvArray($value, $inCharset = "gbk", $outCharset = "utf-8")
{
	if (is_array ( $value ))
	{
		$ret = array ();
		foreach ( $value as $key => $one )
		{
			$ret [$key] = iconv ( $inCharset, $outCharset, $one );
			;
		}
	}
	else
	{
		$ret = iconv ( $inCharset, $outCharset, $value );
	}
	
	return $ret;
}

很明顯,以上函數只支持一維數組轉碼,對於多維就無能爲力了。 如下是本身寫的轉碼函數,無論是字符串,仍是一維、多維數組均可使用。函數

/**
 * 編碼轉換(能夠是多維數組)
 * @author shim
 * @param $data 待轉碼變量
 * @param $in_charset 原編碼, gbk
 * @param $out_charset 目標編碼, utf-8
 * @return array 轉碼後的數據
 */
function iconvArrayA($data, $in_charset = 'gbk', $out_charset = 'utf-8')
{
	if (is_array($data)) 
	{
		foreach ($data as $key => $val)
		{
			$dataA[$key] = iconvArrayA($val, $in_charset, $out_charset);
		}
		return $dataA;	
	}
	else 
	{
		return iconv($in_charset, $out_charset, $data);
	}	
}
相關文章
相關標籤/搜索