�繁体转换的class

5年以前  |  阅读数:384 次  |  编程语言:PHP 

�是以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("","", $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 "

";

echo
"";

echo "";
include("hows.php3");
echo "

";
echo "";
echo "<TD bgcolor='
echo "";
echo "Welcome to www.jerry.com.tw";
echo "
";

echo "";
echo "<TD bgcolor='echo "

";
echo "";
echo "";
echo "";

echo "

";
echo "
";
echo "";
echo "";
echo "";
echo "
";
echo "<a href=index.php3 ";
echo "onmouseout="imgOff('img4')" ";
echo "onmouseover="imgOn('img4')" ";
echo ">";
echo "";
echo "";
echo "
";
include("hows_2.php3");
echo "
";
echo "
";
echo "";
$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 "";
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 "";
echo "";
echo "<td $tb>";
echo "<a href=nbbs.php3?proc=area&aid;=9 >";
echo "<img border=0 src=font.php3?str=MySQL$fnt>";
echo "";
echo "";
echo "<td $tb>";
echo "<a href=nbbs.php3?proc=area&aid;=4 >";
echo "<img border=0 src=font.php3?str=Linux$fnt>";
echo "";
echo "";
echo "<td $tb>";
echo "<a href=nbbs.php3?proc=area&aid;=10 >";
echo "<img border=0 src=font.php3?str=�例程式$fnt>";
echo "";
echo "";
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 "";
echo "";
} else {
if(strlen($QUERY_STRING))
echo "<a href=$aurl&func;=charset&GB;=1>";
else echo "<a href=$aurl?func=charset&GB;=1>";
echo "";
echo "";
}
echo "";
echo "";
echo "";
echo "<td $tb>";
echo "";
echo "<img border=0 src=font.php3?str=相�站台$fnt>";
echo "
";;
echo "";
echo "<td $tb>";
echo "";
echo "<img border=0 src=font.php3?str=相���$fnt>";
echo "
";
echo "";
echo "<td $tb>";
echo "";
echo "<img border=0 src=font.php3?str=�名留念$fnt>";
echo "
";
echo "";

echo "<td $tb>";
echo "";
echo "<img border=0 src=font.php3?str=回首�$fnt>";
echo "
";
echo "";
echo "<td $tb>";
echo "注意:切���勿��按";
echo "";
echo "

";
echo "
";
echo "
";
echo "";

echo "";
echo "";
echo "";
echo "";
echo "";
echo "";
echo "";
echo "";

?>

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例