Home >Backend Development >PHP Tutorial >Improvement of the function for outputting Chinese characters in GD_PHP tutorial

Improvement of the function for outputting Chinese characters in GD_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:59:31739browse

Thanks to sadly for writing a function for outputting Chinese characters in GD.
During use, I found that the string output by this version must be pure Chinese and cannot be mixed with English.
This bug has been fixed and shared with everyone. . .
//Program writen by sadly www.phpx.com
//modified by agun 2000/6/20
function gb2utf8($gb)
{
if (!trim($gb))
return $gb;
$filename="gb2312.txt";
$tmp=file($filename);
$codetable=array();
while(list($key,$value)=each($tmp))
$codetable[hexdec(substr($value,0,6))]=substr($value,7,6);
$ret="";
$utf8="";
while($gb)
{
if (ord(substr($gb,0,1))>127)
{
$this=substr($gb,0,2);
$gb=substr($gb,2,strlen($gb));
$utf8=u2utf8(hexdec( $codetable[hexdec(bin2hex($this))-0x8080]));
for($i=0;$i$ret.=chr( substr($utf8,$i,3));
}
else
{
$ret.=substr($gb,0,1);
$gb=substr($ gb,1,strlen($gb));
}
}
return $ret;
}
function u2utf8($c)
{
for($i =0;$i$str="";
if ($c < 0x80) {
$str.=$c;
}
else if ($c < 0x800) {
$str.=(0xC0 | $c>>6);
$str.=(0x80 | $c & 0x3F);
}
else if ($c < 0x10000) {
$str.=(0xE0 | $c>>12);
$str.=(0x80 | $c>>6 & 0x3F );
$str.=(0x80 | $c & 0x3F);
}
else if ($c < 0x200000) {
$str.=(0xF0 | $c>> 18);
$str.=(0x80 | $c>>12 & 0x3F);
$str.=(0x80 | $c>>6 & 0x3F);
$str.= (0x80 | $c & 0x3F);
}
return $str;
}
Header("Content-type: image/gif");
$im = imagecreate(300,150) ;
$bkg = ImageColorAllocate($im, 0,0,0);
$clr = ImageColorAllocate($im, 255,255,255);
$fnt = "c:windowsfontssimsun.ttf";
//include("gb2utf8.php");
$str = gb2utf8("Chinese agun Agun");
ImageTTFText($im, 30, 0, 50,50, $clr, $fnt, $ str);
ImageGif($im);
ImageDestroy($im);
?>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/631873.htmlTechArticleThanks to sadly for writing the function for outputting Chinese characters in GD. I found this version output during use The string must be pure Chinese and cannot contain English. This bug has been fixed, and everyone...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn