当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP smarty的ubb插件实现彩字

PHP
php新手照样打造自己的搜索引擎phpdig
PHP实现JAVA的XStream (PHP)
PHP单文件上传类或多文件上传类源码
PHP中GBK和UTF8编码处理
DISCUZ架构:misc.func.php文件分析一
PHP教程:PHP中对文件和目录的操作方法
一个完整、安全的PHP用户登录系统
完全讲解PHP+MySQL的分页显示示例分析
PHP应用实例:实现给上传图片加水印图案
用 PHP V5 开发多任务应用程序
用PHP自动把纯文本转换成Web页面
PHP中使用FCKeditor2.3.2配置
网友分享:十四条令PHP初学者头疼问题大总结
PHP程序61条面向对象分析设计的经验原则
PHP 面向对象的方法重载
php可以生成缩略图和水印图的类
十四条令PHP初学者头疼问题大总结
关于PHP接口的学习
php的ajax框架xajax入门与试用
PHP 开发中的中文编码问题

PHP smarty的ubb插件实现彩字


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 90 ::
收藏到网摘: n/a

最近流行彩字,下面是简单的实现方法:

一.彩字的简单实现

以下为引用的内容:
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编码,如果不是,手工转一下..
要使用彩字,只需要用<img src="color.php?t=xxx" />即可,其中,color.php为生成彩字的程序(即上面的程序),xxx为经urlencode编码的文字(用来生成彩字)

三.smarty插件

在smarty的plugins目录下新建一文件modifier.ubb.php,内容如下:

以下为引用的内容:
function smarty_modifier_ubb($string){
    $ubb = array(
        '/\[b\](.+?)\[\/b\]/i', #加粗
        '/\[url=(.+?)\](.+?)\[\/url\]/i', #url
        '/\[colorfont\](.+?)\[\/colorfont\]/ie' #彩字,注意,要加e修饰符
    );
    $tohtml = array(
        '<b>\\1</b>',
        '<a href="\\1">\\2</a>',
        '"<img src=\'color.php?t=".urlencode("\\1")."\'/>"'
    );
    //以上只是演ubb的实现,更多的ubb标签朋友们可以按方法自己实现,其中的color.php根椐实际去修改
    return preg_replace($ubb,$tohtml,$string);
}

这样,要显示彩字,只需在内容中加入
[colorfont]文字[/colorfont]
显示时,在smarty模板中使用ubb修饰符即可,如{$content|ubb}