| (非常全面的一个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;
 }
 ?>
 
 
 
 |