动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
  
   PHP → 阅读文章

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

作者来源: 
阅读 1222 人次 , 2006-3-29 4:11:00 


感谢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<strlen($utf8);$i+=3)
$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<count($c);$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:\windows\fonts\simsun.ttf";
//include("gb2utf8.php");
$str = gb2utf8("中国agun阿棍");
imagettftext($im, 30, 0, 50,50, $clr, $fnt, $str);
imagegif($im);
imagedestroy($im);
?>

 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:关于SESSION的补充
· 下一篇:PHP4可能用到的DLL的列表
· 登陆界面限制到只允许一台机器在线
· 聊天室技术(二)-- 登录
· SNMP 网管函数库
· 透视软件开发过程中的难点
· 网页制作中双下拉菜单的动态实现


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077