投递文章 投稿指南 RSS订阅 站点通告:网站升级,部分数据正在导入之中,请等待..
您的位置:首页 >> Web编程 >> php

看到有人贴简繁转换的程序

发布时间:2006-02-08 16:55:01  文章来源:  浏览次数:1555  
承德互联 专业的unix(freebsd)主机 无限子域 BGP多线 自主开发面版 更快 更稳 更安全

<?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;

}

?>
作者:q3boy
与好友一起分享精彩内容:

收藏到QQ书签】【返回顶部】【返回首页
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 程序支持 - 网站地图 - 意见反馈 - 返回顶部