ThinkPHP中截断指定长度的中文字符串后用省略号代替

本文详细介绍了在TP模板中如何直接调用方法获取字符串并进行截断操作,包括显示效果优化与中文字符串处理技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在TP模板中获取字符串并截断,以前一直觉得很神奇,现在才知道是自己不懂。

开始不是很了解模板中可以直接调用方法,以为$this->assign('content',$res);指派后只能在模板中这样接受{$content},于是写各种原生PHP语句无效

<php>$title = {$content['title']}</php>

后来高手指点才知道在标签<php></php>中不需要{}也就是

//显示效果


参考文章:点击打开链接

<php>$title = $content['title']</php>
于是终于拨开乌云见日开了
//放在Common文件夹下common.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;  //注意TP中的编码都是utf-8,所以+3;如果是GBK改为+2 
              }   
              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>											

 
 
 
 
 
 
 
 
 

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值