您好,欢迎访问一九零五行业门户网

classified post 簡繁体转换的class

這是以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$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$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 ) );
$fc 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
;
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
;
$url.=&.$key.=.urlencode($val);
}
$fcontents = join( '', file( $url ) );
$code=new ccharset;
$fc
//echo 轉換過的 $char_gb;
echo $fcontents;
exit;
}
//} else setcookie(char_gb,0,time()+ 31536000);
echo
;
include(hows.php3);
echo ;
echo ;
echo