Heim >Backend-Entwicklung >PHP-Tutorial >在GD中输出汉字的函数的改进_PHP

在GD中输出汉字的函数的改进_PHP

WBOY
WBOYOriginal
2016-06-01 12:28:37961Durchsuche

感谢sadly为我们写出了在GD中输出汉字的函数,
我在使用中发现此版本输出的字符串必须为纯中文,不能夹杂英文。
随修改了此bug,与大家分享。。。


//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 $str.=$c;
}
else if ($c $str.=(0xC0 | $c>>6);
$str.=(0x80 | $c & 0x3F);
}
else if ($c $str.=(0xE0 | $c>>12);
$str.=(0x80 | $c>>6 & 0x3F);
$str.=(0x80 | $c & 0x3F);
}
else if ($c $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:\windows\fonts\simsun.ttf";
//include("gb2utf8.php");
$str = gb2utf8("中国agun阿棍");
ImageTTFText($im, 30, 0, 50,50, $clr, $fnt, $str);
ImageGif($im);
ImageDestroy($im);
?>

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn