php搜索 繁体怎么转成简体

php搜索 繁体怎么转成简体,第1张

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("<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

}

/

echo mb_convert_encoding("你是我的朋友", "GB2312", "big5")

mb_convert_encoding 函数为php内部多字节字符串编码转换函数,可以在有需要的使用场合(如:解决在GB2312编码环境下使用Ajax产生的中文字乱码的问题)方便进行编码转换,以解决网页乱码的问题,使用非常方便,效率非常高,几乎支持所有编码


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/6674600.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-26
下一篇2023-03-26

发表评论

登录后才能评论

评论列表(0条)

    保存