修改Smarty的变量调节器truncate无乱码截取中文

smarty截取字数有乱码处理方法 1.找到/libs/Smarty/plugins/modifier.truncate.php方法: function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false) { if ($length == 0) return ''; if (strlen($ 阅读详情

网站的页面在展现时,为了美观,经常需要对一些标题的长度进行控制。在整个程序中,到处都是那忙碌的字符串截取函数,而且还可能出现中文乱码。用mb_substr()可以比较好的截取中文,但是它把中文和英文都按一个字符处理,截取的效果感觉不是太好。

如果你是用Smarty做表现层的话,可以用smarty的变量调节器truncate方法来控制字符串的长度,当然利用Smarty自己的truncate截取中文时,会出现乱码。我们可以改写它的truncate调节器,让它来帮我们截取字符串,达到一劳永逸的效果。

找到你的Smarty安装目录,打开plugins/modifier.truncate.php文件。你可以用下面的函数替换掉smarty自己的函数。

function smarty_modifier_truncate($string, $length = 80, $etc = '...',
                                    $break_words = false, $middle = false)
{
     if ($length == 0)
          return '';

      if (strlen($string) > $length) {
          $length -= min($length, strlen($etc));
          for($i = 0; $i < $length ; $i++) {
     $strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
    }
    return $strcut.$etc;  
        
      } else {
          return $string;
      }
}

参数$length:为截取字符串的最大长度,默认为80字符,一个中文按2个字符计算;$etc:截取字符串时,自动附加在后面的符号。默认为(...);$break_words 本指为是否可以打断一个单词,在中文环境下,作用不大,在改写的方法中,后面两个参数不起什么作用。

最后说下使用,{$title|truncate:30:"..."} ,很简单不是?当然这30个字符的长度还包括(...),如果你不喜欢,可以自己修改上面代码中的一行

smarty 中文字符串截取示例 //如果有中文则减去中文的个数 function smarty_modifier_truncate($string, $sublen = 80, $etc = '...', $break_words = false, $middle = false) 立即下载

相关推荐

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

本篇文章是对smarty 截取字符串函数 truncate的用法进行了详细的分析介绍,需要的朋友参考下

对smarty 字符串截取函数 truncate 的改进 V2

为了便于smarty版本的升级维护,对truncate原函数不做修改而是在plugins下新建一个文件命名为modifier_truncatey。修改后的函数采用utf-8编码格式,支持中文字符串截取,消除因字符串中包含HTML代码对截取产生的影响。内容如下

leijuly'blog 1746

科技中介服务机构想要提升服务效率,需要哪些数智工具支持?.docx

科技中介服务机构想要提升服务效率,需要哪些数智工具支持?

Smarty截取字符串(中文和英文均支持)

Smarty截取字符串(中文和英文均支持)

乐杨俊浅谈LAMP 4530

从硅到氮化镓:用Sentaurus TCAD仿真GaN HEMT功率器件,我踩过的那些坑

本文分享了使用Sentaurus TCAD仿真GaN HEMT功率器件的实战经验,详细解析了从硅基到氮化镓的技术转型中遇到的五大关键挑战:材料参数设置、极化效应建模、网格划分策略、陷阱模型校准以及仿真与实测数据匹配。通过具体案例和参数优化方法,帮助工程师避开常见陷阱,提升TCAD仿真精度与效率。

weixin_28726671的博客 379

C#实战:如何用winmm.dll打造毫秒级高精度定时器(附完整代码)

本文详细介绍了在C#中利用winmm.dll实现毫秒级高精度定时器的完整方案。针对.NET内置定时器精度不足的问题,通过调用timeSetEvent等原生API,提供了超越系统时钟中断周期的精准定时能力。文章包含核心原理剖析、完整的封装类代码以及音视频处理、游戏开发等场景下的实战应用与性能调优指南。

ujm5678901的博客 690

smarty中应用mb_substr()截取字符串

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33692284的博客 195

【Unity】制作简易三维场景

本文介绍如何制作一个三维场景

CiNian_的博客 5333

smarty截取中文乱码问题解决办法

修改Smarty的变量调节器truncate无乱码截取中文网站的页面在展现时,为了美观,经常需要对一些标题的长度进行控制。在整个程序中,到处都是那忙碌的字符串截取函数,而且还可能出现中文乱码。用mb_substr()可以比较好的截取中文,但是它把中文和英文都按一个字符处理,截取的效果感觉不是太好。如果你是用Smarty做表现层的话,可以用smarty的变量调节器truncate方法来控

libailin的专栏 1431

为什么idea已经改了UTF-8还是乱码,如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1577

zemax像差参数Ray Fan/Spot Diagram/MTF/....讲解三

zemax像差参数Ray Fan/Spot Diagram/MTF/....讲解三

weixin_72050316的博客 1386

smarty截取中文乱码问题解决办法---转载

网站的页面在展现时,为了美观,经常需要对一些标题的长度进行控制。在整个程序中,到处都是那忙碌的字符串截取函数,而且还可能出现中文乱码。用mb_substr()可以比较好的截取中文,但是它把中文和英文都按一个字符处理,截取的效果感觉不是太好。 如果你是用Smarty做表现层的话,可以用smarty的变量调节器truncate方法来控制字符串的长度,当然利用Smarty自己的truncate截取...

weixin_33857230的博客 109

【FastDDS】Layer DDS之Subscriber ( 09-Accessing received data)

Fast DDS提供了多种接收数据访问方式:通过读取(read)或提取(take)操作获取数据,其中提取会移除数据而读取保留数据。应用程序可通过序列高效借用接收队列内存,但需及时归还。数据处理时需检查SampleInfo的有效性,可通过监听器回调或等待集机制异步获取数据。等待集允许线程专门等待新数据到达,通过条件触发和超时控制实现可靠的数据接收处理。

Ray Home 863

关于Smarty插件中truncate截取中文乱码的解决方案

当我们使用Smarty自带的truncate变量调节器来控制字符串长度的时候,由于truncate方法只能对于英文字符进行截取,当我们截取中文字符的时候就会出现我们最不想看到的乱码,这个时候,我们可以通过改写一个新的变量调节器来截取中文字符,做到一劳永逸的效果。         首先要知道Smarty的安装目录,打开plugins文件夹,新建一个php文件,并且命名为modifier.sbtru

sam867509978的专栏 1513

基于 STM32 与压电薄膜的婴儿睡眠呼吸暂停监测床垫设计

本设计以 STM32F103C8T6 为主控,结合 PVDF 压电薄膜传感器,通过模拟信号调理与数字峰值检测算法,实现了对婴儿睡眠呼吸状态的实时监测。系统结构简单、成本低廉、无接触无束缚,当检测到 20 秒以上无呼吸信号时自动触发声光报警,可有效降低婴儿睡眠呼吸暂停带来的安全风险。后续可扩展蓝牙 / WiFi 模块,将报警信息推送至家长手机端,实现远程监护。

weixin_42300449的博客 152

第182期 Claude Skills:深入探究Anthropic的智能体框架(一篇彻底讲透彻)

摘要: Claude Skills是Anthropic推出的智能体框架,通过连接外部工具和服务扩展Claude AI的功能,支持实时交互与任务执行。其核心架构包含技能路由器、注册表、执行引擎等模块,采用渐进式披露机制优化上下文管理。与MCP和A2A相比,Skills更注重模块化设计与Claude深度集成,通过SKILL.md文件定义可重复工作流程,兼具高效性和灵活性。开发者可创建自定义技能,遵循聚焦用户价值、安全隐私等最佳实践,实现AI能力的场景化拓展。该框架与MCP、A2A形成互补,共同推动智能体生态发展

全网120W+关注AI拉呱,专注人工智能以及科技前沿! 2134

改进smarty的truncate让他支持中文[转]

 smarty的truncate不支持中文的截取。将smarty目录下plugins中的modifier.truncate.php改成下面这个样子就可以了[PHP]/** Smarty plugin* -------------------------------------------------------------* Type:     modifier* Name:     trun

斗战圣Q 1799

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

解决Smarty中truncate截取中文字符乱码问题

function smarty_modifier_truncate_utf($string, $length = 80, $etc = '...') { $result = ''; $string = html_entity_decode(trim(strip_tags($string)), ENT_QUOTES, 'utf-8'); for($i = 0, $j = 0; $i < st

无缺扇 648

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

mysql utf8 php smarty 截取汉字_smarty中改进truncate使其支持中文的方法

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

weixin_42525569的博客 145

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

smarty 过滤html,smarty截取字符串与过滤HTML标签

用truncate截取文字时如果内容读出出现样式错误,首先看是否因有HTML中标签的css样式,使用|strip_tags过滤。truncate用法:{$item.content|strip_tags|truncate:60:"...":true}$item.content是要过滤的内容,strip_tags的作用是过滤从数据库读出的内容里含有HTML标签的信息,truncate:60:"..."...

weixin_33315608的博客 473

smarty使用小技巧——截取小技巧

smarty截取字符串(末尾没有...) 今天发现有个网页出现乱码,检查发现是用truncate()函数截取的字符串,truncate()函数对中文支持不好,随用mb_substr()函数替换truncate(),但是忘了怎么用,问了半天谷哥才知道,现记下以防再忘。 用法:{$a|mb_substr:截取字符的起始位置:要截取的长度:‘字符编码’} 如:{$abc|mb_substr:0:2

BondJames007的专栏 861

smarty模板截取字符串乱码问题完美解决```````

每一次遇到问题,都有解决的方法。当你解决了问题时,会发现原来自己一直在进步````学php不久,却喜欢上了这种语言。太完美了。今天遇到了一个乱码问题,这类问题对于一个smarty模板忠实者来说,应该算是普遍性的。个人认为smarty和php是个近乎完美的组合。下面就是解决问题的方法:smarty模板截取字符串后边几个字乱码。改写文件modifier_truncate.p

潇湘博客 3165

改良Smarty的truncate插件:smartTruncate

一般网站页面的显示都不可避免的会涉及子字符串的截取,这个时候truncate就派上用场了,但是它只适合英文用户,对与中文用户来说,使用truncate会出现乱码,而且对于中文英文混合串来说,截取同样个数的字符串,实际显示长度上却不同,视觉上会显得参差不齐,影像美观。这是因为一个中文的长度大致相当与两个英文的长度。此外,truncate也不能同时兼容GB2312, UTF-8等编码。改良的sma

刻木求剑的BLOG 752

mysql utf8 php smarty 截取汉字_[转]smarty截取字符串,截取汉字字符串问题解决方法...

原有的函数截取中文字符时会出现乱码问题,修改smarty目录下plugins\modifier.truncate.php文件如下function smarty_modifier_truncate($string, $sublen = 80, $etc = '...',$break_words = false, $middle = false){$start=0;$code="UTF-8";if($...

weixin_42364855的博客 202

Smarty截取中文乱码的解决办法

Smarty截取中文乱码的解决办法Written by 标点符 on 2010年04月6日 in PHP 前面一篇文章提到的是PHP截取中文时出现乱码的解决办法。这篇文章从模板引擎Smarty的角度去解决截取中文乱码的问题。 smarty的字符串截取函数是针对拉丁字符设计的,对于像汉字这样的非单字节文字在截取时就会出现乱码问题,下面是我从网上找来的一个解决方案,因为此文被转载得很多,原始出处

坚持是世界上每个有所建树的人共有的品质! 876
上一篇: php的Smarty中实现模板嵌套的方法(转)
下一篇: JS隐藏错误
onsrs
博客等级 码龄20年 4粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值