length,string,truncate,charset,substr
后端开发-php教程
smarty 关于truncate使用的问题{$d.title|truncate:25}
我想这样让多余的标题以…显示
在线阅读网站免费模板源码下载,ubuntu系统分配,面试题tomcat怎么配置,镜子爬虫子,期末考试php机考,seo选词策略lzw
只是truncate好像是把数字、各种字符、中文一样当做1个字符但数字毕竟占2个才占一个中文的空间,而且有末尾的“…”,又占了3个字符的空间。
导致标题列出后层次不齐。
动力网站源码,ubuntu包安装目录,tomcat一闪一退,家里满地爬虫子,php判断目录是否有写入权限,淘宝seo pdflzw
数字多的显示很短,中文多的又会显示很长。如何让truncate认为数字也是半个字符呢?
crm asp源码,vscode代码键盘快捷键,ubuntu 卸载gdm,tomcat启动已有项目,爬虫软件代理,php 行为日志,新乡县网络seo优化排名,织梦大气婚纱影楼网站源码lzw
希望高手、老鸟指教,多谢!——解决方案——————–
为什么不在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; }}