簡繁体转换的class

作者:网络 来源:佚名 更新时间:2008-07-02 16:04:12 点击:


這是以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錯誤..
// 為什麼? 想想看吧... @[email protected]
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;

}
//} else setcookie("char_gb",0,time()+ 31536000);
echo "
<meta http-equiv='content-type' content='text/html; charset=big5'>  
<style type="text/css">
//<!--
.menufont {font-family: 新細明體; font-size: 9pt; letter-spacing: 1pt; text-decoration: none ; color: balck}
.frame_font {font-family: 新細明體; font-size: 9pt; letter-spacing: 1pt; text-decoration: none ; color: yellow}
.tablefont {font-family: 新細明體; font-size: 9pt; letter-spacing: 1pt; text-decoration: none ; color: .bodycolor {font-family: 新細明體; font-size: 9pt; letter-spacing: 1pt; text-decoration: none ; color: .num {font-family: arial; font-weight:bold ; font-style: normal; font-size: 8pt; letter-spacing: 1pt; text-decoration: none ; color:a { color: green ; text-decoration: none }
a:hover { color: red ; }
//-->
</style>
";

echo
"<script language=javascript>
<!--
if (document.images) {

img4on = new image();
img4on.src="http://edu.cnzz.cn/newsinfo/page_img/logo_2.gif";
img4off = new image();
img4off.src="http://edu.cnzz.cn/newsinfo/http://edu.cnzz.cn/newsinfo/page_img/logo.gif";
}
function imgon(imgname) {
if (document.images) {
document[imgname].src = eval(imgname + "on.src"); }}

function imgoff(imgname) {
if (document.images) {
document[imgname].src = eval(imgname + "off.src"); }}
//-->
</script>";

echo "<body leftmargin=0 rightmargin=0 topmargin=0 marginwidth='0' marginheight='0'>";
include("hows.php3");
echo "<table border=0 width=100% cellpadding=0 cellspacing=0 >";
echo "<tr>";
echo "<td bgcolor='
echo "<a href=http://www.jerry.com.tw/ >";
echo "<img src='http://edu.cnzz.cn/newsinfo/page_img/left_logo.gif' border=0 alt='welcome to www.jerry.com.tw'>";
echo "</a>";

echo "</td>";
echo "<td bgcolor='echo "<table border=0 width=100% cellpadding=0 cellspacing=0 class='frame_font'>";
echo "<tr>";
echo "<td width=200>";
echo "<table border=0 width=100% cellpadding=0 cellspacing=0 >";
echo "<tr><td>";
echo "<a href=index.php3 ";
echo "onmouseout="imgoff('img4')" ";
echo "onmouseover="imgon('img4')" ";
echo ">";
echo "<img name=img4 src=http://edu.cnzz.cn/newsinfo/http://edu.cnzz.cn/newsinfo/page_img/logo.gif valign=top border=0>";
echo "</a>";
echo "</td></tr>";
echo "<tr><td align='center'>";
include("hows_2.php3");
echo "</td></tr>";
echo "</table>";
echo "</td>";
echo "<td valign=bottom>";
echo "<table border=0 width=90% cellpadding=0 cellspacing=0 class='frame_font'>";
$tb=" width=20% height=18 align=left ";
$fnt="&sz=18&cr=231&cg=255&cb=123&br=102&bg=153&bb=153&sh=1";
echo "<tr>";
echo "<td width=20% $tb>";
echo "<a href=nbbs.php3?proc=area&aid=3>";
echo "<img border=0 src=font.php3?str=php/zend$fnt>";
echo "</a>";
echo "</td>";
echo "<td $tb>";
echo "<a href=nbbs.php3?proc=area&aid=9 >";
echo "<img border=0 src=font.php3?str=mysql$fnt>";
echo "</a>";
echo "</td>";
echo "<td $tb>";
echo "<a href=nbbs.php3?proc=area&aid=4 >";
echo "<img border=0 src=font.php3?str=linux$fnt>";
echo "</a>";
echo "</td>";
echo "<td $tb>";
echo "<a href=nbbs.php3?proc=area&aid=10 >";
echo "<img border=0 src=font.php3?str=範例程式$fnt>";
echo "</a>";
echo "</td>";
echo "<td $tb>";
if(strlen($query_string)) $aurl="http://".$http_host.$php_self."?".$query_string;
else $aurl="http://".$http_host.$php_self;
$aurl=str_replace("?char_gb=1","", $aurl);
$aurl=str_replace("?char_gb=0","", $aurl);
$aurl=str_replace("&char_gb=1","", $aurl);
$aurl=str_replace("&char_gb=0","", $aurl);
if(isset($char_gb) && $char_gb==1) {
if(strlen($query_string))
echo "<a href=$aurl&func=charset&gb=0>";
else echo "<a href=$aurl?func=charset&gb=0>";
echo "<img border=0 src=http://edu.cnzz.cn/newsinfo/big5.gif>";
echo "</a>";
} else {
if(strlen($query_string))
echo "<a href=$aurl&func=charset&gb=1>";
else echo "<a href=$aurl?func=charset&gb=1>";
echo "<img border=0 src=http://edu.cnzz.cn/newsinfo/gb.gif>";
echo "</a>";
}
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td $tb>";
echo "<a href=php_url.php3 >";
echo "<img border=0 src=font.php3?str=相關站台$fnt>";
echo "</a>";;
echo "</td >";
echo "<td $tb>";
echo "<a href=php_news.php3 >";
echo "<img border=0 src=font.php3?str=相關報導$fnt>";
echo "</a>";
echo "</td>";
echo "<td $tb>";
echo "<a href=singin.php3 >";
echo "<img border=0 src=font.php3?str=簽名留念$fnt>";
echo "</a>";
echo "</td>";

echo "<td $tb>";
echo "<a href=index.php3 >";
echo "<img border=0 src=font.php3?str=回首頁$fnt>";
echo "</a>";
echo "</td>";
echo "<td $tb>";
echo "注意:切換鈕請勿連續按";
echo "</td>";
echo "</tr>";
echo "</table>";
echo "</td>";

echo "</tr>";
echo "</table>";
echo "</td>";

echo "</tr>";
echo "<tr >";
echo "<td valign=top height='25'>";
echo "<img src=http://edu.cnzz.cn/newsinfo/page_img/curve1.gif >";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";

?>