smarty 关于truncate使用的有关问题
程序员文章站
2022-04-02 11:57:38
...
smarty 关于truncate使用的问题
{$d.title|truncate:25}
我想这样让多余的标题以...显示
只是truncate好像是把数字、各种字符、中文一样当做1个字符
但数字毕竟占2个才占一个中文的空间,而且有末尾的“...”,又占了3个字符的空间。
导致标题列出后层次不齐。
数字多的显示很短,中文多的又会显示很长。
如何让truncate认为数字也是半个字符呢?
希望高手、老鸟指教,多谢!
------解决方案--------------------
为什么不在PHP里处理这些呢?帮顶
------解决方案--------------------
自定义截取中文的函数。
------解决方案--------------------
唉 才20分
将以下code保存为modifier.mb_truncate.php,将此php放入smarty下面的libs/plugins目录下
使用方法:{$d.title|mb_truncate:25}
{$d.title|truncate:25}
我想这样让多余的标题以...显示
只是truncate好像是把数字、各种字符、中文一样当做1个字符
但数字毕竟占2个才占一个中文的空间,而且有末尾的“...”,又占了3个字符的空间。
导致标题列出后层次不齐。
数字多的显示很短,中文多的又会显示很长。
如何让truncate认为数字也是半个字符呢?
希望高手、老鸟指教,多谢!
------解决方案--------------------
为什么不在PHP里处理这些呢?帮顶
------解决方案--------------------
自定义截取中文的函数。
------解决方案--------------------
唉 才20分
将以下code保存为modifier.mb_truncate.php,将此php放入smarty下面的libs/plugins目录下
使用方法:{$d.title|mb_truncate:25}
- PHP code
function smarty_modifier_mb_truncate($string, $length = 80, $etc = '...', $charset='UTF-8', $break_words = false, $middle = false){ if ($length == 0) return ''; if (mb_strlen($string) > $length) { $length -= min($length, mb_strlen($etc)); if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/u', '', mb_substr($string, 0, $length+1, $charset)); } if(!$middle) { return mb_substr($string, 0, $length, $charset) . $etc; } else { return mb_substr($string, 0, $length/2, $charset) . $etc . mb_substr($string, -$length/2, (mb_strlen($string)-$length/2), $charset); } } else { return $string; }}相关文章
相关视频
推荐阅读
-
关于PHP模板Smarty的初级使用方法以及心得分享
-
Oracle关于不能直接使用序列到insert select的问题
-
有关Ajax中get和post的使用问题
-
关于PySnooper 永远不要使用print进行调试的问题
-
关于使用spingMVC框架启动tomcat服务器失败的问题
-
关于使用Vagaa哇嘎高速下载会伤硬盘的问题正确解答
-
关于北斗掉线问题,从使用方来谈谈卫星定位的问题
-
关于mybatis使用map传参0和 " !='' " 的问题
-
关于安装linux redhat后无法使用yum命令安装gcc-c++问题的解决过程
-
关于使用PLSQL Developer时出现报错ora-12514的问题