|
這是以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;
} //} 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="page_img/logo_2.gif"; img4off = new Image(); img4off.src="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='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=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=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=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=page_img/curve1.gif >"; echo "</TD>"; echo "</TR>"; echo "<TR>"; echo "<TD>";
?> |
|