解决phpexcelparser的中文问题!
这个函数看不懂,大侠帮忙看下!
下面是两个实现unicode和中文转换的函数,可是我不知道function get( $exc, $data ) 中的 $exc, $data 分别是要输入什么参数。
多谢大家帮忙,祝大家新年快乐!
其实这两个函数是别人从PHPExcelParserPro3.0里面摘出来的,我开始以为是别人自己编的,所以就硬着头皮看了半天!
后来突然发现函数名是PHPExcelParserPro3.0里面的,把它们覆盖以后,可以解决PHPExcelParserPro3.0的中文显示问题。让存入Mysql里的中文不再是unicode码,而是中文字符
再次感谢函数原创者!
<?php
function uc2html($str) {
$ret = '';
for( $i=0; $i<strlen($str)/2; $i++ ) {
$charcode = ord($str[$i*2])+256*ord($str[$i*2+1]);
// $ret .= '&#'.$charcode;
$ret .= iconv("utf-8","gb2312",u2utf8($charcode));
}
return $ret;
}
其中u2utf8为
function u2utf8($c) {
$str="";
if ($c < 0x80) {
$str.=$c;
} else if ($c < 0x800) {
$str.=chr(0xC0 | $c>>6);
$str.=chr(0x80 | $c & 0x3F);
} else if ($c < 0x10000) {
$str.=chr(0xE0 | $c>>12);
$str.=chr(0x80 | $c>>6 & 0x3F);
$str.=chr(0x80 | $c & 0x3F);
} else if ($c < 0x200000) {
$str.=chr(0xF0 | $c>>18);
$str.=chr(0x80 | $c>>12 & 0x3F);
$str.=chr(0x80 | $c>>6 & 0x3F);
$str.=chr(0x80 | $c & 0x3F);
}
return $str;
}
function get( $exc, $data )
{
switch( $data['type'] )
{
// string
case 0:
$ind = $data['data'];
if( $exc->sst[unicode][$ind] ) {
return uc2html($exc->sst['data'][$ind]);//这就是编码处理。如果你需要,可以这里。但不建议那样做
}else
return $exc->sst['data'][$ind];
// integer
case 1:
return (integer) $data['data'];
// float
case 2:
return (float) $data['data'];
case 3:
return gmdate("m-d-Y",$exc->xls2tstamp($data[data]));
default:
return '';
}
}
[ 本帖最后由 zhudianchen 于 2007-12-30 01:55 编辑 ]