我的学习生活记录

这里是SUYE的站点

递归函数转换字符编码

2021-6-22 夙夜 实际技能

function m_mb_convert_encoding($string) {
if(!is_array($string) && !is_int($string)) {
return mb_convert_encoding($string, 'UTF-8', 'UTF-8');
}

foreach($string as $key => $value) {
$string[$key] = m_mb_convert_encoding($value);
}

return $string;
}

或者
static public function autoCharset($string, $from='gbk', $to='utf-8') {
$from = strtoupper($from) == 'UTF8' ? 'utf-8' : $from;
$to = strtoupper($to) == 'UTF8' ? 'utf-8' : $to;
if (strtoupper($from) === strtoupper($to) || empty($string) || (is_scalar($string) && !is_string($string))) {
//如果编码相同或者非字符串标量则不转换
return $string;
}
if (is_string($string)) {
if (function_exists('mb_convert_encoding')) {
return mb_convert_encoding($string, $to, $from);
} elseif (function_exists('iconv')) {
return iconv($from, $to, $string);
} else {
return $string;
}
} elseif (is_array($string)) {
foreach ($string as $key => $val) {
$_key = self::autoCharset($key, $from, $to);
$string[$_key] = self::autoCharset($val, $from, $to);
if ($key != $_key)
unset($string[$key]);
}
return $string;
}
else {
return $string;
}
}

标签: php