Home > php教程 > php手册 > 簡繁体转换的class_php基础

簡繁体转换的class_php基础

WBOY
Release: 2016-05-17 09:05:32
Original
1308 people have browsed it

這是以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" ) );
$fcontents=str_replace("","", $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;
$fcontents=$code->Big5_Gb($fcontents);
//echo "轉換過的 $CHAR_GB";
echo $fcontents;
exit;

}
//} else setcookie("CHAR_GB",0,time()+ 31536000);
echo "
  

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template