php iconv gb2312 utf8,php不使用iconv库进行gb2312与utf-8编码转换的函数

这段代码演示了如何在PHP中实现GB2312到UTF-8以及UTF-8到GB2312的字符编码转换。通过读取对照表文件,将汉字进行编码替换,实现字符串的编码转换。该方法适用于处理中文字符在不同编码格式间的转换需求。
摘要由CSDN通过智能技术生成

//对照表的使用

$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);

?>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值