站长论坛

标题: 简体中文与繁体中文互转的PHP函数 [打印本页]

作者: tzlink    时间: 2007-9-30 14:10
标题: 简体中文与繁体中文互转的PHP函数
<?  
function isgb($code)  
{  
if (strlen($code)>=2)  
{  
$code=strtok($code,"");  
if ((ord($code[0]) < 161)||(ord($code[0]) >= 247))  
{  
return (0);  
}  
else  
{  
if ((ord($code[1]) <= 161)||(ord($code[1]) >= 254))  
{  
return (0);  
}  
else  
{  
return (1);  
}  
}  
}  
else  
{  
return (1);  
}  
}  

function gboffset($code)  
{  
if (strlen($code) >= 2)  
{  
$code=strtok($code,"");  
return ((ord($code[0]) - 161) * 94 + (ord($code[1]) - 161));  
}  
else  
{  
return(-1);  
}  
}  

function wordtostring($code)  
{  
return (chr(hexdec(substr($code,0,2))).chr(hexdec(substr($code,2,2))));  
}  

function gbtobig5($code)  
{  
include "data_gb.php";  
$output="";  
$length=strlen($code);  
$code=strtok($code,"");  
$idx=0;  
while ($idx < $length)  
{  
$tmpStr=$code[$idx].$code[$idx+1];  

if (isgb($tmpStr))  
{  
$offset=gboffset($tmpStr);  
if (($offset >= 0)||($offset <= 8177))  
{  
$output.=wordtostring($gborder[$offset]);  
$idx++;  
}  
else  
{  
$output.= $code[$idx];  
}  
}  
else  
{  
$output.= $code[$idx];  
}  
$idx++;  
}  
return ($output);  
};  
?>  


繁体中文转换为简体中文的PHP函数

<?  
function isbig5($code)  
{  
if (strlen($code)>=2)  
{  
$code=strtok($code,"");  

if (ord($code[0]) < 161)  
{  
return (0);  
}  
else  
{  
if (((ord($code[1]) >= 64)&&(ord($code[1]) <= 126))||((ord($code[1]) >= 161)&&(ord($code[1]) <= 254)))  
{  
return (1);  
}  
else  
{  
return (0);  
}  
}  
}  
else  
{  
return (0);  
}  
}  

function big5offset($code)  
{  
if (strlen($code) >= 2)  
{  
$code=strtok($code,"");  
if ((ord($code[1]) >= 64)&&(ord($code[1]) <= 126))  
{  
return ((ord($code[0]) - 161) * 157 + (ord($code[1]) - 64));  
}  
if ((ord($code[1]) >= 161)&&(ord($code[1]) <= 254))  
{  
return ((ord($code[0]) - 161) * 157 + 63 + (ord($code[1]) - 161));  
}  
}  
return (-1);  
}  

function wordtostring($code)  
{  
return (chr(hexdec(substr($code,0,2))).chr(hexdec(substr($code,2,2))));  
}  

function big5togb($code)  
{  
include "data_big5.php";  
$output="";  
$length=strlen($code);  
$code=strtok($code,"");  
$idx=0;  
while ($idx < $length)  
{  
$tmpStr=$code[$idx].$code[$idx+1];  

if (isbig5($tmpStr))  
{  
$offset=big5offset($tmpStr);  
if (($offset >= 0)||($offset <= 14757))  
{  
$output.=wordtostring($big5order[$offset]);  
$idx++;  
}  
else  
{  
$output.= $code[$idx];  
}  
}  
else  
{  
$output.= $code[$idx];  
}  
$idx++;  
}  
return ($output);  
}  
?>




欢迎光临 站长论坛 (http://www.tzlink.com/bbs/) Powered by Discuz! X3.2