php smarty函数扩展

中文截取 modifier.cn_truncate.php


代码如下:

function smarty_modifier_cn_truncate($string, $strlen = 20, $etc = '...',
$keep_first_style = false)
{
$strlen = $strlen*2;
$string = trim($string);
if ( strlen($string) <= $strlen ) {
return $string;
}
$str = strip_tags($string);
$j = 0;
for($i=0;$i<$strlen;$i++) {
if(ord(substr($str,$i,1))>0xa0) $j++;
}
if($j%2!=0) $strlen++;
$rstr=substr($str,0,$strlen);
if (strlen($str)>$strlen ) {$rstr .= $etc;}
if ( $keep_first_style == true && ereg('^<(.*)>$',$string) ) {
if ( strlen($str) <= $strlen ) {
return $string;
}
$start_pos = strpos($string,substr($str,0,4));
$end_pos = strpos($string,substr($str,-4));
$end_pos = $end_pos+4;
$rstr = substr($string,0,$start_pos) . $rstr . substr($string,$end_pos,strlen($string));
}
return $rstr;
}

modifier.ubb.php


代码如下:

<?php
function smarty_modifier_ubb($str) {
$ubbs['quote'][0] = '/\[quote\](.*?)\[\/quote\]/s';
$ubbs['quote'][1] = '<blockquote>引用:<hr size=1>\1<hr size=1></blockquote>';
$ubbs['b'][0] = '/\[b\](.*?)\[\/b\]/s';
$ubbs['b'][1] = '<b>\1</b>';
$ubbs['i'][0] = '/\[i\](.*?)\[\/i\]/s';
$ubbs['i'][1] = '<i>\1</i>';
$ubbs['u'][0] = '/\[u\](.*?)\[\/u\]/s';
$ubbs['u'][1] = '<u>\1</u>';
$ubbs['li'][0] = '/\[li\](.*?)\[\/li\]/s';
$ubbs['li'][1] = '<li>\1</li>';
$ubbs['img'][0] = '/\[img\](.*?)\[\/img\]/s';
$ubbs['img'][1] = '<img border="0" src="\1">';
$ubbs['img2'][0] = '/\[img=([^,]+),([^\]]+)\](.*?)\[\/img\]/s';
$ubbs['img2'][1] = '<img border="0" width="\1" height="\2" src="\3">';
$ubbs['url'][0] = '/\[url\](.*?)\[\/url\]/s';
$ubbs['url'][1] = '<a href="\1" target="_blank">\1</a>';
$ubbs['url2'][0] = '/\[url=([^\]]+)\](.*?)\[\/url\]/s';
$ubbs['url2'][1] = '<a href="\1" target="_blank">\2</a>';
$ubbs['email'][0] = '/\[email=([^\]]+)\](.*?)\[\/email\]/s';
$ubbs['email'][1] = '<a href="mailto:\2">\2</a>';
$ubbs['qq'][0] = '/\[qq\]([0-9]{5,10})\[\/qq\]/s';
$ubbs['qq'][1] = '<a target="new" href="tencent://message/?uin=\1&Site=www.52515.net&Menu=yes"><img border="0" src="http://wpa.qq.com/pa?p=1:\1:\1" alt="点击这里给我发消息"></a>';
$ubbs['color'][0] = '/\[color=([^\]]+)\](.*?)\[\/color\]/s';
$ubbs['color'][1] = '<font color="\1">\2';
$ubbs['font'][0] = '/\[font=([^\]]+)\](.*?)\[\/font\]/s';
$ubbs['font'][1] = '<font face="\1">\2';
$ubbs['size'][0] = '/\[size=([0-9]+)\](.*?)\[\/size\]/s';
$ubbs['size'][1] = '<font size="\1" style="line-height:\1em;">\2';
$ubbs['sizept'][0] = '/\[size=([0-9,pt]+)\](.*?)\[\/size\]/s';
$ubbs['sizept'][1] = '<font style="font-size:\1">\2';
$ubbs['align'][0] = '/\[align=([^\]]+)\](.*?)\[\/align\]/s';
$ubbs['align'][1] = '<div align="\1">\2';
$ubbs['media'][0] = '/\[media\](.*?)\[\/media\]/s';
$ubbs['media'][1] = '<embed src="\1"></embed>';
$ubbs['list'][0] = '/\[list\](.*?)\[\/list\]/s';
$ubbs['list'][1] = '<ul>\1</ul>';
$ubbs['list2'][0] = '/\[list=([0-9]+)\](.*?)\[\/list\]/s';
$ubbs['list2'][1] = '<ol>\2</ol>';
$ubbs['indent'][0] = '/\[indent\](.*?)\[\/indent\]/s';
$ubbs['indent'][1] = '<div style="text-indent: 20px;">\1';
$ubbs['table'][0] = '/\[table([=,0-9,%]*)\](.*?)\[\/table\]/s';
$ubbs['table'][1] = '<table style="border:#0099FF 1px dotted;border-right-width:0px; border-top-width:0px;">\2';
$ubbs['tr'][0] = '/\[tr\](.*?)\[\/tr\]/s';
$ubbs['tr'][1] = '<tr>\1';
$ubbs['td'][0] = '/\[td\](.*?)\[\/td\]/s';
$ubbs['td'][1] = '<td style="border:#0099FF 1px dotted; border-left-width:0px; border-bottom-width:0px;"> \1';
$ubbs['td2'][0] = '/\[td([^(\]|\[)]+)\](.*?)\[\/td\]/s';
$ubbs['td2'][1] = '<td style="border:#0099FF 1px dotted; border-left-width:0px; border-bottom-width:0px;"> \2';
$str = str_replace('[*]','<li>',$str);
foreach ($ubbs as $ubb){
$str = ubb_replace($ubb[0],$ubb[1],$str);
}
return $str;
}
function ubb_replace($pattern,$replacement,$str){
do {
$str_ret = $str;
$str = preg_replace($pattern,$replacement,$str);
}while($$str);
return $str_ret;
}
?>

编码 modifier.unescape.php


代码如下:

function smarty_modifier_unescape($str)
{
$str = rawurldecode($str);
preg_match_all("/(?:%u.{4})|[^%]+/",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(substr($v,0,2) == "%u" && strlen($v) == 6)
$ar[$k] = iconv("UCS-2","GB2312",@pack("H4",substr($v,-4)));
}
return join("",$ar);
}

(0)

相关推荐

  • smarty中改进truncate使其支持中文的方法

    本文实例讲述了smarty中改进truncate使其支持中文的方法.分享给大家供大家参考,具体如下: smarty的truncate不支持中文的截取.将smarty目录下plugins中的modifier.truncate.php改成下面这个样子就可以了 <?php /* * Smarty plugin * ------------------------------------------------------------- * Type: modifier * Name: truncate

  • Smarty中常用变量操作符汇总

    本文汇总了Smarty中常用变量操作符,分享给大家供大家参考.具体如下: php模板引擎smarty的变量操作符可用于操作变量,自定义函数和字符. 语法中使用"|"应用变量操作符,多个参数用":"??指簟?/DIV> capitalize[首字母大写] count_characters[计算字符数] cat[连接字符串] count_paragraphs[计算段落数] count_sentences[计算句数] count_words[计算词数] date_f

  • smarty模板中拼接字符串的方法

    PHP页面传到Smarty模板上的变量(这里用,在Smarty上创建两个变量代替) 复制代码 代码如下: {assign var="name" value='Richard.Lee'}{assign var="age" value='27'} 1.想要在Smarty模板的某个位置输出(Richard.Lee---27)拼接方法:{$name|cat:"---"|cat:$age}解释:将变量$name."---".$age 拼

  • 解析smarty 截取字符串函数 truncate的用法介绍

    smarty truncate 截取字符串从字符串开始处截取某长度的字符,默认的长度为80指定第二个参数作为截取字符串的长度默认情况下,smarty会截取到一个词的末尾,如果需要精确到截取多少个字符可以使用第三个参数,将其设为"true"具体用法如下: 复制代码 代码如下: //index.php $smarty = new Smarty; $smarty->assign('articleTitle', 'Two Sisters Reunite after Eighteen Ye

  • Zend Framework框架Smarty扩展实现方法

    本文实例讲述了Zend Framework框架Smarty扩展实现方法.分享给大家供大家参考,具体如下: 今天总结一下ZF框架中扩展Smarty模板的方法,在ZF帮助文档中已经有比较详细的介绍,在这我稍微多说一些. 一.将smarty的核心文件包放在lib文件夹下,文件包中要包括(internals/,plugins/,Config_File.class.php,Smarty.class.php,Smarty_Compiler.class.php,debug.tpl). 二.在Zend/View

  • smarty中先strip_tags过滤html标签后truncate截取文章运用

    strip_tags() 函数剥去 HTML.XML 以及 PHP 的标签. 复制代码 代码如下: <?php echo strip_tags("Hello <b>world!</b>"); ?> smarty中可以使用strip_tags去除html标签,包括在< >之间的任何内容. 例如: index.php: 复制代码 代码如下: $smarty = new Smarty; $smarty->assign('articleTi

  • smarty半小时快速上手入门教程

    本文讲述了smarty快速上手入门的方法,可以让读者在半小时内快速掌握smarty的用法.分享给大家供大家参考.具体实现方法如下: 一.smarty的程序设计部分: 在smarty的模板设计部分我简单的把smarty在模板中的一些常用设置做了简单的介绍,这一节主要来介绍一下如何在smarty中开始我们程序设计.下载Smarty文件放到你们站点中. index.php代码如下: 复制代码 代码如下: <?php /** * * @version $Id: index.php * @package

  • php smarty truncate UTF8乱码问题解决办法

    估计不少玩smarty模板的小朋友都遇到过裁切乱码问题.特别是UTF8编码的. 以下代码保存为modifier.truncate2.php 存到smarty libs下的plugin目录下 然后裁剪的时候用$v->content|truncate2:100 就搞定了. 如果不好用可能是缓存导致,请速度删除templates_c下的缓存文件(小编搞的时候遇到缓存问题.) 复制代码 代码如下: <?php/** * Smarty plugin * @package Smarty * @subpac

  • php smarty函数扩展

    中文截取 modifier.cn_truncate.php 复制代码 代码如下: function smarty_modifier_cn_truncate($string, $strlen = 20, $etc = '...', $keep_first_style = false) { $strlen = $strlen*2; $string = trim($string); if ( strlen($string) <= $strlen ) { return $string; } $str =

  • Kotlin语法学习-变量定义、函数扩展、Parcelable序列化等简单总结

    Kotlin语法学习-变量定义.函数扩展.Parcelable序列化等简单总结 今年 Google I/O 2017 开发者大会中,Google 宣布正式把 Kotlin 纳入 Android 程序的官方一级开发语言(First-class language),作为Android开发者,当然要逐步熟悉这门语言,第一步就要从语法开始学习. 在这之前,我们需要了解怎么使用Kotlin编写一个Android应用.对于Android Studio 3.0版本,我们在创建工程的时候直接勾选 Include

  • SQL2005CLR函数扩展-深入环比计算的详解

    此类问题还可以延伸到类似进销存的批次计算中,这也要关注其他历史记录来决定当前某条记录的状态. sql语句无法简单实现mdx语句的类似功能,必须得用交叉表关联来对比.这里我们用CLR函数来实现mdx语句的类似语法.在select的时候把得到过的做个缓存就可以了.效率应该可以提高不少. clr的代码如下,编译为TestFun.dll,复制到sql服务器的文件目录下.--------------------------------------------------------------------

  • SQL2005CLR函数扩展-繁简转换的实现代码

    这个方法比较简单,用Microsoft.VisualBasic命名空间下强大的字符串处理函数就可以了c#代码如下,编译为BigConvertor.dll-------------------------------------------------------------------------------- 复制代码 代码如下: using System; using System.Data.SqlTypes; using Microsoft.SqlServer.Server; public

  • 模仿JQuery.extend函数扩展自己对象的js代码

    但在写的过程中发现,如果要在之前写好的对象中添加新的静态方法或实例方法,要修改原有的对象结构,于是查看了jquery了extend方法,果然extend方法支持了jq的半边天,拿来主义,给自己的对象做扩张用. 下面进入正题: 假如有以下一个对象 复制代码 代码如下: var MyMath = { //加法 Add: function(a, b){ return a + b; }, //减法 Sub: function(a, b){ return a - b; } } 对象名MyMath,有两个静

  • 日期函数扩展类Ver0.1.1

    复制代码 代码如下: <% '转发时请保留此声明信息,这段声明不并会影响你的速度! '**************************   [日期扩展类]Ver 0.1.1******************************** '开发人:        Sman.Net Fetch '开发日期:        2005-11-11 '版本号:        Ver 0.1.1 '官方网站:http://www.sman.cn     http://www.ad0.cn '电子邮件:

  • Windows Powershell 通过函数扩展别名

    在Powershell中设置别名的确方便快捷,但是在设置别名的过程中并设置参数的相关信息.尽管别名会自动识别参数,但是如何把经常使用的参数默认设定在别名里面呢?例如Test-Connection -Count 2 -ComputerName,让-"-Count 2″ 固化在别名中. 这时简单的别名无法完成上述需求,可以通过函数来完成它,并且一旦把函数拉过来,定义别名会变得更加灵活. PS C:\PS> function test-conn { Test-Connection -Count

  • SQL2005CLR函数扩展-解析天气服务的实现

    我们可以用CLR获取网络服务 来显示到数据库自定函数的结果集中,比如163的天气预报http://news.163.com/xml/weather.xml他的这个xml结果的日期是不正确的,但这个我们暂不讨论.从这个xml获取天气的CLR代码如下,用WebClient访问一下就可以了.然后通过Dom对象遍历节点属性返回给结果集.-------------------------------------------------------------------------------- 复制代码

  • SQL2005CLR函数扩展-数据导出的实现详解

    SQLServer数据导出到excel有很多种方法,比如dts.ssis.还可以用sql语句调用openrowset.我们这里开拓思路,用CLR来生成Excel文件,并且会考虑一些方便操作的细节. 下面我先演示一下我实现的效果,先看测试语句--------------------------------------------------------------------------------exec BulkCopyToXls 'select * from testTable' , 'd:

  • JS字符串函数扩展代码

    复制代码 代码如下: /**************************************************** *CreateBy:joe zhou *CreateDate:2011-9-4 *Description:字符串辅助函数 ****************************************************/ //String.prototype = { // caption: function () { // }, // leftPad: fun

随机推荐