• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php smarty truncate UTF8乱码问题解决办法_php实例

php 搞代码 4年前 (2022-01-26) 38次浏览 已收录 0个评论

估计不少玩smarty模板的小朋友都遇到过裁切乱码问题。特别是UTF8编码的。

以下代码保存为modifier.truncate2.php 存到smarty libs下的plugin目录下

然后裁剪的时候用$v->conte本文来源gaodai$ma#com搞$$代**码)网8搞代gaodaima码nt|truncate2:100

就搞定了。

如果不好用可能是缓存导致,请速度删除templates_c下的缓存文件(小编搞的时候遇到缓存问题。)

<?php<BR>/**<BR> * Smarty plugin<BR> * @package Smarty<BR> * @subpackage plugins<BR> */<br><br> <BR>/**<BR> * Smarty truncate modifier plugin<BR> *<BR> * Type:     modifier<br><BR> * Name:     truncate<br><BR> * Purpose:  Truncate a string to a certain length if necessary,<BR> *           optionally splitting in the middle of a word, and<BR> *           appending the $etc string or inserting $etc into the middle.<BR> * @link http://smarty.php.net/manual/en/language.modifier.truncate.php<BR> *          truncate (Smarty online manual)<BR> * @author   Monte Ohrt <BR> * @param string<BR> * @param integer<BR> * @param string<BR> * @param boolean<BR> * @param boolean<BR> * @return string<BR> */<BR>function smarty_modifier_truncate2( $string,$length = 80,$etc='...',$count_words = true ) {<BR> return $returnstr =substr_utf8($string, 0, $length).$etc; <br><br>}<br><br>function substr_utf8($str, $start=0, $length=-1, $return_ary=false) {<BR>    $len = strlen($str);if ($length == -1) $length = $len;<BR>    $r = array();<BR>    $n = 0;<BR>    $m = 0;<br><br>    for($i = 0; $i < $len; $i++) {<BR>        $x = substr($str, $i, 1);<BR>        $a = base_convert(ord($x), 10, 2);<BR>        $a = substr('00000000'.$a, -8);<BR>        if ($n < $start) {<BR>            if (substr($a, 0, 1) == 0) {<BR>            }elseif (substr($a, 0, 3) == 110) {<BR>                $i += 1;<BR>            }elseif (substr($a, 0, 4) == 1110) {<BR>                $i += 2;<BR>            }<BR>            $n++;<BR>        }else {<BR>            if (substr($a, 0, 1) == 0) {<BR>                $r[] = substr($str, $i, 1);<BR>            }elseif (substr($a, 0, 3) == 110) {<BR>                $r[] = substr($str, $i, 2);<BR>                $i += 1;<BR>            }elseif (substr($a, 0, 4) == 1110) {<BR>                $r[] = substr($str, $i, 3);<BR>                $i += 2;<BR>            }else {<BR>                $r[] = '';<BR>            }<BR>            if (++$m >= $length) {<BR>                break;<BR>            }<BR>        }<BR>    }<br><br>    return $return_ary ? $r : implode("",$r);<BR>}<BR>/* vim: set expandtab: */<BR>?>


samrty的插件体系还是比较智能而且容易修改的。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php smarty truncate UTF8乱码问题解决办法_php实例
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址