当前位置:首页> PHP教程> php进阶
关键字
文章内容
简繁转换的程序
 
 
修改时间:[2011/08/15 08:38]    阅读次数:[1465]    发表者:[起缘]
 
<?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;
}
?> 


(非常全面的一个php技术网站, 有相当丰富的文章和源代码.)