好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

在GD中输出汉字的函数 - php函数

在GD中输出汉字的函数

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

<?  //Program writen by sadly HdhCmsTestphpfensi测试数据   //modified by agun 2013/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:windowsfontssimsun.ttf" ;  //include("gb2utf8.php");   $str  = gb2utf8( "中国agun阿棍" );  ImageTTFText( $im , 30, 0, 50,50,  $clr ,  $fnt ,  $str );  ImageGif( $im );  ImageDestroy( $im );  ?> 

查看更多关于在GD中输出汉字的函数 - php函数的详细内容...

  阅读:38次