在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函数的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did30701