php iconv扩展,php函数mult_iconv:转换任意维数组的字符集编码(扩展iconv函数功能)...

php的iconv函数只支持对字符串的转换编码,如果是数组,就要自己遍历转换了,因此写如上的函数,对任意维数组进行转换,同时转换下标(索引)及值。

注意:不转对象。

function mult_iconv($in_charset,$out_charset,$data)

{

if(substr($out_charset,-8)=='//IGNORE'){

$out_charset=substr($out_charset,0,-8);

}

if(is_array($data)){

foreach($data as $key => $value){

if(is_array($value)){

$key=iconv($in_charset,$out_charset.'//IGNORE',$key);

$rtn[$key]=mult_iconv($in_charset,$out_charset,$value);

}elseif(is_string($key) || is_string($value)){

if(is_string($key)){

$key=iconv($in_charset,$out_charset.'//IGNORE',$key);

}

if(is_string($value)){

$value=iconv($in_charset,$out_charset.'//IGNORE',$value);

}

$rtn[$key]=$value;

}else{

$rtn[$key]=$value;

}

}

}elseif(is_string($data)){

$rtn=iconv($in_charset,$out_charset.'//IGNORE',$data);

}else{

$rtn=$data;

}

return $rtn;

}

调用示例:

$foobar=mult_iconv('gbk','utf-8','一个数组、字符串或其它类型数据');

一个复杂一点的测试示例(不转对象)

// ******* 一个复杂一点的测试示例 ********************

class MyClass

{

public $v1='不转对象,恭喜发财';

public $v2='skipped object';

public function f()

{

return true;

}

}

$obj=new MyClass();

$foo=array('abcd','随便写点文字'

,array('中文下标'=> 789,'天地玄黄'

=>array('宇宙洪荒'=>'赵钱孙李',300=>'恭喜发财,不转对象'

,array('更深的数组'=>'照样可以转换')

)

)

,'恭喜发财,不转对象' => $obj

,'如需转对象'=>'Do It Yourself!'

,'作者很懒'=>'用不到就不写了'

);

$bar=mult_iconv('gbk','utf-8//IGNORE',$foo);

var_dump($bar);

延伸阅读coded by nessus

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值