php自动转换字符集函数,从thinkphp中提取

作者:enenba | 发表于:2012-04-28 21:29 | 分类:php源码

php自动转换字符集函数,这个是从thinkphp中提取出来的函数,可以单独使用。

支持数组转换,也就是数组下的所有变量转换成想要的字符集,

小分析下此函数,先使用mb_convert_encoding转换字符集,不行再使用iconv转换。

 

<?php
// 自动转换字符集 支持数组转换
function auto_charset($fContents, $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($fContents) || (is_scalar($fContents) && !is_string($fContents))) {
        //如果编码相同或者非字符串标量则不转换
        return $fContents;
    }
    if (is_string($fContents)) {
        if (function_exists('mb_convert_encoding')) {
            return mb_convert_encoding($fContents, $to, $from);
        } elseif (function_exists('iconv')) {
            return iconv($from, $to, $fContents);
        } else {
            return $fContents;
        }
    } elseif (is_array($fContents)) {
        foreach ($fContents as $key => $val) {
            $_key = auto_charset($key, $from, $to);
            $fContents[$_key] = auto_charset($val, $from, $to);
            if ($key != $_key)
                unset($fContents[$key]);
        }
        return $fContents;
    }
    else {
        return $fContents;
    }
}

//测试内容  
$ss = file_get_contents('test.html'); //test.html是gbk内容 
echo auto_charset($ss);
?>

 

 

 

正常输出中文

end

上一篇: php正文提取原理演示——过滤篇   |   下一篇:php正则表达式邮箱问题» 标签: php函数 php函数库

评论: