来源:自学PHP网 时间:2014-12-25 09:57 作者: 阅读:次
[导读] 簡繁体转换的class,這是以class包裝好的簡繁體轉換的class,另外需要兩個table檔:1.http://www.jerry.com.tw/php/big5.map2.http://www.jerry.com.tw/php/gb.map程式如下:CCharset.php3lt;?//==================================...
這是以class包裝好的簡繁體轉換的class,
另外需要兩個table檔: 1. http://www.jerry.com.tw/php/big5.map 2. http://www.jerry.com.tw/php/gb.map 程式如下: CCharset.php3 <? //===================================================== // 程式員: Magic Jerry // // function Big5_Gb($str) => big5轉GB for string // function Gb_Big5($str) => GB轉Big5 for string //===================================================== class CCharset { var $gb_map="gb.map"; //如果要放到別的路徑,要加上完整路徑 var $big5_map="big5.map"; //例如 ="/home/table/gb.map var $dep_char = 127; //----------------------------------------------------------------- function cbig5_gb($str,$fd) { $c=ord(substr($str,0,1)); $x=ord(substr($str,1,1)); $address=(($c-160)*510)+($x-1)*2; fseek($fd, $address); $hi=fgetc($fd); $lo=fgetc($fd); return "$hi$lo"; } function cgb_big5($str,$fd) { $c=ord(substr($str,0,1)); $x=ord(substr($str,1,1)); $address=(($c-160)*510)+($x-1)*2; fseek($fd, $address); $hi=fgetc($fd); $lo=fgetc($fd); return "$hi$lo"; } //----------------------------------------------------------------- function Big5_Gb($str) { $fd = fopen ($this->gb_map, "r"); $str=str_replace("charset=big5","charset=gb2312", $str); $outstr=""; for($i=0;$i<strlen($str);$i++) { $ch=ord(substr($str,$i,1)); if($ch > $this->dep_char) { $outstr.=$this->cbig5_gb(substr($str,$i,2),$fd); $i++; } else { $outstr.=substr($str,$i,1); } } fclose ($fd); return $outstr; } //----------------------------------------------------------------- function Gb_Big5($str) { $fd = fopen ($this->big5_map, "r"); $str=str_replace("charset=gb2312","charset=big5", $str); $outstr=""; for($i=0;$i<strlen($str);$i++) { $ch=ord(substr($str,$i,1)); if($ch > $this->dep_char) { $outstr.=$this->cgb_big5(substr($str,$i,2),$fd); $i++; } else { $outstr.=substr($str,$i,1); } } fclose ($fd); return $outstr; } } ?> =================================================================== 使用範例: <? // Designer: Magic Jerry //====直接轉換文字串 的使用方法======== include("CCharset.php3"); $obj=new CCharset; $big5="這是一個big5的文字串"; $tgb=$obj->Big5_Gb($big5); echo $tgb; //===> $tgb為轉換好的gb碼字串 $tbig5=$obj->Gb_Big5($tgb); echo $tbig5; // 又被轉回來了: big5 //====================================== ?> <? //如果直接轉換網頁 或是檔案 // 語法 http://your.domain.com.tw/這個程式.php3?http://要轉碼的網頁url或檔案 // example: 轉換奇摩首頁 // http://your.domain.com.tw/這個程式.php3?http://www.kimo.com.tw/index.shtml // 注意: 以下寫法如遇到該網頁有使用cookie,例如認證user,可能會被踢回,login錯誤.. // 為什麼? 想想看吧... @_@ include("CCharset.php3"); $file=$QUERY_STRING; $fcontents = join( '', file( "$file" ) ); $fcontents=str_replace("<head>","<head><base href=$file>", $fcontents); $code=new CCharset; $gb=$code->Big5_Gb($fcontents); echo $gb; ?> 範例: <? if($func=="charset") { setcookie("CHAR_GB",$GB,time()+ 31536000); $t=time(); $url="http://".$HTTP_HOST.$PHP_SELF."?".$QUERY_STRING; $url=str_replace("?func=charset&GB=1","", $url); $url=str_replace("?func=charset&GB=0","", $url); $url=str_replace("&func=charset&GB=1","", $url); $url=str_replace("&func=charset&GB=0","", $url); //echo $url; //echo "SET to Charset = $CHAR_GB"; $t=time(); echo " <script language=javascript> document.location='$url' </script> "; exit; } //phpinfo(); if($CHAR_GB==1 && !$istran ) { include("CCharset.php3"); if(strlen($QUERY_STRING)) $url="http://".$HTTP_HOST.$PHP_SELF."?".$QUERY_STRING."&istran=1"; else $url="http://".$HTTP_HOST.$PHP_SELF."?istran=1"; while (list ($key, $val) = each ($HTTP_COOKIE_VARS)) { //echo "$key => $val<br>"; $url.="&".$key."=".urlencode($val); } $fcontents = join( '', file( "$url" ) ); $code=new CCharset; $fcontents=$code->Big5_Gb($fcontents); //echo "轉換過的 $CHAR_GB"; echo $fcontents; exit; } / |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com