PHP学会网 php培训网 PHP暑期培训 PHP寒假培训 PHP假期培训 » 入门和基础知识 » 不用iconv库的gb2312与utf-8的互换函数
本页主题: 不用iconv库的gb2312与utf-8的互换函数 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

游子云



该用户目前不在线
级别: 管理员
精华: 3
发帖: 246
威望: 205 点
金钱: 2066 PYMB
贡献值: 0 点
在线时间:38(小时)
注册时间:2005-10-27
最后登录:2008-08-19

不用iconv库的gb2312与utf-8的互换函数


顶端 Posted: 2005-12-23 13:12 | [楼 主]
游子云



该用户目前不在线
级别: 管理员
精华: 3
发帖: 246
威望: 205 点
金钱: 2066 PYMB
贡献值: 0 点
在线时间:38(小时)
注册时间:2005-10-27
最后登录:2008-08-19

不用iconv库的gb2312与utf-8的互换函数


[code]//对照表的使用
$filename = "gb2utf8.txt";
$fp = fopen($filename,"r");
while(! feof($fp)) {
list($gb,$utf8) = fgetcsv($fp,10);
$charset[$gb] = $utf8;
}
fclose($fp);
//以上读取对照表到数组备用

/** gb2312到utf-8 **/
function gb2utf8($text, &$charset) {
//提取文本中的成分,汉字为一个元素,连续的非汉字为一个元素
preg_match_all("/(?:[x80-xff].)|[x01-x7f]+/",$text,$tmp);
$tmp = $tmp[0];
//分离出汉字
$ar = array_intersect($tmp, array_keys($charset));
//替换汉字编码
foreach($ar as $k=>$v)
$tmp[$k] = $charset[$v];
//返回换码后的串
return join('',$tmp);
}

/** utf-8到gb2312 **/
function utf82gb($text, &$charset) {
$p = "/[xf0-xf7][x80-xbf]{3}|[xe0-xef][x80-xbf]{2}|[xc2-xdf][x80-xbf]|[x01-x7f]+/";
preg_match_all($p,$text,$r);
$utf8 = array_flip($charset);
foreach($r[0] as $k=>$v)
if(isset($utf8[$v]))
$r[0][$k] = $utf8[$v];
return join('',$r[0]);
}

//测试
$s = gb2utf8('这是对照表的测试', $charset);
echo utf82gb($s, $charset);
?>
[/code]
顶端 Posted: 2005-12-23 13:12 | 1 楼
PHP学会网 php培训网 PHP暑期培训 PHP寒假培训 PHP假期培训 » 入门和基础知识

现在时间:09-06 00:13 Copyright © 2006 phpwhy.com 版权所有
浙ICP备05060669号

点击这里给我发消息关于我们 - 合作联系