ThinkPHP中截断指定长度的中文字符串后用省略号代替
在TP模板中获取字符串并截断,以前一直觉得很神奇,现在才知道是自己不懂。
开始不是很了解模板中可以直接调用方法,以为$this->assign('content',$res);指派后只能在模板中这样接受{$content},于是写各种原生PHP语句无效
<php>$title = {$content['title']}</php>
后来高手指点才知道在标签
//显示效果
参考文章:点击打开链接
<php>$title = $content['title']</php>
于是终于拨开乌云见日开了
//放在Common文件夹下common.php中的获取中文字符串的方法
<pre name="code" class="php">function abslength($str){ $len=strlen($str); $i=0; $j=0; while($i<$len) { if(preg_match("/^[".chr(0xa1)."-".chr(0xf9)."]+$/",$str[$i])) { $i+=3; <span style="color:#ff0000;">//注意TP中的编码都是utf-8,所以+3;如果是GBK改为+2 </span> } else { $i+=1; } $j++; } return $j; }
//模板中的部分代码
<table> <tbody> <volist name="article" id="content"> <tr class=""> <!--鼠标移动上去显示截断前的字符串,太简单了哦--> <td title="{$content['title']}" style="cursor:pointer;"><li><a href="{:U('Home/Info/detail?id='.$content['id'])}"><strong> <php> echo substr('abc',0,2).'...'; <!--测试语句,如果全是非中文,这条语句就能搞定--> $title = $content['title']; $length = abslength($title); if ($length>6) { </php> {$content['title'] | String::msubstr=0,5,'utf-8',true} //参考的是底部的连接 <php> } else { echo $content['title']; } </php> </strong></a></li></td> <td class="center">{$content['time']}</td> </tr> </volist> </tbody> </table><span> </span>
<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">