摘要:在赋值时必须用反斜杠对标示符进行转义二利用递归将数组转码编码编码相互转换支持数组字符串,支持数组传递原字符串编码输出的字符串编码
一、利用var_export(), eval()方法这里有两种方法,都可以实现数组的编码相互转换。
/** * 将含有GBK的中文数组转为utf-8 * * @param array $arr 数组 * @param string $in_charset 原字符串编码 * @param string $out_charset 输出的字符串编码 * @return array */ function array_iconv($arr, $in_charset="gbk", $out_charset="utf-8") { $ret = eval("return ".iconv($in_charset,$out_charset,var_export($arr,true).";")); return $ret; // 这里转码之后可以输出json // return json_encode($ret); }
原理很简单 var_export设置第二个参数为true,返回数组原型字符串,将字符串转换为utf-8编码,之后再用eval来执行返回(类似匿名函数?),至此完美解决问题。
eval() 函数小结:
条件:eval() 函数把字符串按照 PHP 代码来计算。该字符串必须是合法的 PHP 代码,且必须以分号结尾。
如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。
$a ="hello"; $res = eval("return $a;"); print_r($res); // 在赋值时必须用反斜杠对$标示符进行转义 eval("$str = "$str";"); echo $str;二、利用递归将数组转码
/** * UTF-8编码 GBK编码相互转换/(支持数组) * * @param array $str 字符串,支持数组传递 * @param string $in_charset 原字符串编码 * @param string $out_charset 输出的字符串编码 * @return array */ function array_iconv($str, $in_charset="gbk", $out_charset="utf-8") { if(is_array($str)) { foreach($str as $k => $v) { $str[$k] = array_iconv($v); } return $str; } else { if(is_string($str)) { // return iconv("UTF-8", "GBK//IGNORE", $str); return mb_convert_encoding($str, $out_charset, $in_charset); } else { return $str; } } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/30387.html
摘要:前后端交互过程中涉及的编码首先,浏览器的设置里有设置编码格式,一般设置为。按照设置的顺序检查检测文件的编码。 起因 最近在写PHP,本身对PHP不太熟练。然后遇到编码这个问题,困扰了大半天,索性,系统探索解决一番。 前后端交互过程中涉及的编码 Browser cilent: 首先,浏览器的设置里有设置编码格式,一般设置为UTF-8。 AJAX request: AJAX异步请求的过程...
摘要:前后端交互过程中涉及的编码首先,浏览器的设置里有设置编码格式,一般设置为。按照设置的顺序检查检测文件的编码。 起因 最近在写PHP,本身对PHP不太熟练。然后遇到编码这个问题,困扰了大半天,索性,系统探索解决一番。 前后端交互过程中涉及的编码 Browser cilent: 首先,浏览器的设置里有设置编码格式,一般设置为UTF-8。 AJAX request: AJAX异步请求的过程...
摘要:微信小程序开发官方文档,正在开发的小程序的源码,都给了我不少启发到小程序上富文本的解析一个优秀的开源项目微信小程序富文本解析组件作用在于解析你论坛上的帖子内容,你论坛上加粗的文字,加了颜色的文字,图片等等,都可以原原本本的展示在小程序中。 关于这个小程序 Github : https://github.com/DowneyL/di...‘ 这个小程序是公司针对一个自家产品的需求,而这个...
阅读 977·2021-11-04 16:08
阅读 2957·2021-09-13 10:37
阅读 492·2019-08-30 15:56
阅读 1926·2019-08-30 15:55
阅读 2225·2019-08-30 15:53
阅读 2070·2019-08-30 13:13
阅读 2908·2019-08-30 12:51
阅读 1531·2019-08-29 16:06