下一篇 » « 上一篇

简繁转换的程序

作者:爱好者    时间:2008-01-22    来源:php之家    点击:1019    本文共1篇文章 字体:[ ]

简繁转换的程序

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

php学习之家


$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++;
}
} php学习之家
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;
}
?>

-------------------------------------------------------------------------------- www.444p.com php学习之家



发表评论
密码: (游客不需要密码)
记住我【Alt+S 或 Ctrl+Enter 快速提交】

搜索工具


《PHP教程》点击排行