免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1013 | 回复: 0
打印 上一主题 下一主题

编写smarty的ubb插件实现彩字 [复制链接]

论坛徽章:
2
丑牛
日期:2013-09-29 09:47:222015七夕节徽章
日期:2015-08-21 11:06:17
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-17 09:11 |只看该作者 |倒序浏览

最近流行彩字,下面是简单的实现
方法
:
一.彩字的简单实现
header("Content-type: image/png");
$text = $_GET['t'];
$font = 'STXINGKA.TTF'; //TTF字体
$fontsize = 30;
$size = imagettfbbox($fontsize, 0, $font, $text); //获得字体长宽范围
$dx = abs($size[2]-$size[0]) +10;
$dy = abs($size[5]-$size[3]);
//构建图像
$im = imagecreate($dx,$dy);
imagecolorallocate($im, 255,255, 255); //背景色
$fontcolor = imagecolorallocate($im, 255, 0, 0); //字体颜色
ImageTTFText($im, $fontsize, 0, 0, abs($size[5]), $fontcolor, $font, $text);
imagepng($im);
imagedestroy($im);
上面的程序只是表述了一些彩字的基本原理,要实现更复杂和美观的彩字,所要做的只是更换一下字体,改一下字体颜色,添加一些背景图,再考虑一下缓存等,方法也差不多,朋友们可以自己试试.
二.彩字应用
上面的程序生成的彩字是通过"?t=文字"来传递的,但需注意的是,这些文字最好用urlencode来编码,当然,长度也应该有限制,这不是本文讨论的范围.
另外,生成彩字的程序和传递文字的程序都使用UTF-8编码,如果不是,手工转一下..
要使用彩字,只需要用即可,其中,color.php为生成彩字的程序(即上面的程序),xxx为经urlencode编码的文字(用来生成彩字)
三.smarty插件

smarty
的plugins目录下新建一文件modifier.ubb.php,内容如下:
function smarty_modifier_ubb($string){
    $ubb = array(
        '/\[b\](.+?)\[\/b\]/i', #加粗
        '/\(.+?)\[\/url\]/i', #url
        '/\[colorFont\](.+?)\[\/colorFont\]/ie' #彩字,注意,要加e修饰符
    );
    $toHtml = array(
        '\\1',
        '\\2',
        '""'
    );
    //以上只是演UBB的实现,更多的UBB标签朋友们可以按方法自己实现,其中的color.php根椐实际去修改
    return preg_replace($ubb,$toHtml,$string);
}
这样,要显示彩字,只需在内容中加入
[colorFont]文字[/colorFont]
显示时,在smarty模板中使用ubb修饰符即可,如{$content|ubb}


本文来自ChinaUnix博客,如果查看原文请点:[url]http://blog.chinaunix.net/u/4206/showart_691334.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP