一份gb2312.txt(184799字節(jié))確實(shí)顯得太大了點(diǎn),而且還要經(jīng)unicode轉(zhuǎn)換。
這份對(duì)照表為51965字節(jié),要小的多了。
對(duì)于無法使用iconv函數(shù)庫的場(chǎng)合還是很實(shí)用的。

<?php
//對(duì)照表的使用 " /> 日本在线啊啊,蜜臀久久精品,欧美韩日一区

色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

不用iconv庫的gb2312與utf-8的互換函數(shù)


一份gb2312.txt(184799字節(jié))確實(shí)顯得太大了點(diǎn),而且還要經(jīng)unicode轉(zhuǎn)換。
這份對(duì)照表為51965字節(jié),要小的多了。
對(duì)于無法使用iconv函數(shù)庫的場(chǎng)合還是很實(shí)用的。

<?php
//對(duì)照表的使用
$filename = "gb2utf8.txt";
$fp = fopen($filename,"r");
while(! feof($fp)) {
list($gb,$utf8) = fgetcsv($fp,10);
$charset[$gb] = $utf8;
}
fclose($fp);
//以上讀取對(duì)照表到數(shù)組備用

/** gb2312到utf-8 **/
function gb2utf8($text, &$charset) {
//提取文本中的成分,漢字為一個(gè)元素,連續(xù)的非漢字為一個(gè)元素
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];
//返回?fù)Q碼后的串
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]);
}

//測(cè)試
$s = gb2utf8('這是對(duì)照表的測(cè)試', $charset);
echo utf82gb($s, $charset);
?>

php技術(shù)不用iconv庫的gb2312與utf-8的互換函數(shù),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 巴林左旗| 乐业县| 满洲里市| 东乌| 安远县| 寿宁县| 南岸区| 北辰区| 分宜县| 阿拉善右旗| 定日县| 东丽区| 漾濞| 大冶市| 太白县| 连江县| 桂林市| 米林县| 调兵山市| 花莲市| 漳平市| 定日县| 云安县| 五河县| 金溪县| 阿克陶县| 通渭县| 响水县| 鞍山市| 文安县| 金寨县| 松滋市| 天祝| 富源县| 清镇市| 塔城市| 台中市| 尼玛县| 枣阳市| 滕州市| 眉山市|