"巧妙使用php的var_export()函数为数组转换编码"


本文最后更新于 2403 天前,文中的信息可能已经有所发展或发生改变。

在写网络爬虫时,会遇到网页编码的问题,国内通常的网页编码是GB2312和UTF-8。通常本人喜欢使用UTF-8,因为在生成json字符串的时候只能使用utf-8。

如果是纯字符串使用iconv()函数可以转换不同的编码文字,但是这样比较容易出错,而且无法直接转换数组内容的编码。

因此,要做些巧妙的处理,php有个函数var_export(),用于将变量转换为形如array(0 => a)的合法php字符串。

这样可以先将需要转换编码的数组用var_export()函数输出,然后使用iconv()函数转换编码,转换完成以后再利用eval()函数执行此字符串即可返回编码转换完成以后的数组。

代码实现如下:

<?php
function output($arr = array()) {
	return eval('return ' . iconv('GB2312', 'UTF-8', var_export($arr, true)) . ';');
}
//end

Published

Author

levin

Category

Web

Tags

PHP
Disqus loading now...