频道栏目
首页 > 资讯 > 常用功能 > 正文

简繁转换的程序

16-01-08        来源:[db:作者]  
收藏   我要投稿
PHP代码:--------------------------------------------------------------------------------

<?php
/**
*中速版,中等内存使用,使用于一般需求或有大量重复字的大段文本 
*@text:待转换的字符串
*@table_file:转换映射表文件名
*/
function encode_trans1($text,$table_file='gb2big5') { 
$fp = fopen($table_file.'.table', "r"); 
$cache = array();
$max=strlen($text)-1; 
for($i=0;$i<$max;$i++) { 
$h=ord($text[$i]);
if($h>=160) { 
$l=ord($text[$i+1]); 
if($h==161 && $l==64) { 
$text[$i]=" ";
} else{ 
$cut = substr($text,$i,2);
if(!$cache[$cut]) {
fseek($fp,($h-160)*510+($l-1)*2); 
$cache[$cut] = fread($fp,2); 
}
$text[$i] = $cache[$cut][0];
$text[++$i] = $cache[$cut][1];
} 
}
}
fclose($fp); 
return $text;
} 

/**
*低速版,最低内存使用,使用于少量字符时 
*@text:待转换的字符串
*@table_file:转换映射表文件名
*/
function encode_trans2($text,$table_file='gb2big5') { 
$fp = fopen($table_file.'.table', "r"); 
$max=strlen($text)-1; 
for($i=0;$i<$max;$i++) { 
$h=ord($text[$i]);
if($h>=160) { 
$l=ord($text[$i+1]); 
if($h==161 && $l==64) { 
$gb=" ";
}else{ 
fseek($fp,($h-160)*510+($l-1)*2); 
$gb=fread($fp,2); 
} 
$text[$i]=$gb[0]; 
$text[$i+1]=$gb[1]; $i++; 
} 
}
fclose($fp); 
return $text;
} 
/**
*高速版,最高内存使用,使用于大段文本时 
*@text:待转换的字符串
*@table_file:转换映射表文件名
*/
function encode_trans3($text,$table_file='gb2big5') { 
$fp = fopen($table_file.'.table', "r"); 
$str = fread($fp,strlen($table_file.'.table'));
fclose($fp);
$max=strlen($text)-1; 
for($i=0;$i<$max;$i++) { 
$h=ord($text[$i]);
if($h>=160) { 
$l=ord($text[$i+1]); 
if($h==161 && $l==64) { 
$text[$i]=' ';
$text[++$i]=' ';
}else{ 
$pos = ($h-160)*510+($l-1)*2;
$text[$i]=$str[$pos]; 
$text[++$i]=$str[$pos+1]; 
} 
} 
}
return $text;
}
?>

--------------------------------------------------------------------------------

相关TAG标签
上一篇:怎么提取字符串中的图片地址并转换编码后放回原处
下一篇:Discuz! X3/X2设置发件邮箱图解
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站