ThinkPHP 模板substr的截取字符串函数 在Common/function.php加上以下代码 /** ** 截取中文字符串 **/ function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true){ if(function_exists("mb_substr")){ $slice= mb_substr($str, $start, $length, $charset); }elseif(function_exists('iconv_substr')) { $slice= iconv_sub 在ThinkPHP框架中,模板引擎提供了`substr`函数来截取字符串,但默认情况下,它可能无法正确处理中文字符。为了处理中文字符串的截取,通常需要自定义一个函数,如`msubstr`,这个函数可以确保在不同环境下正确地截取包含中文的字符串。在`ThinkPHP`的`Common/function.php`文件中添加`msubstr`函数是一种常见的实践。 `msubstr`函数的主要目的是兼容不同的多字节字符集(如UTF-8、GBK、GB2312等),确保在没有`mb_substr`或`iconv_substr`函数可用的情况下也能正常工作。以下是`msubstr`函数的详细说明: ```php function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true){ // 如果mb_substr函数存在,则使用该函数 if(function_exists("mb_substr")){ $slice = mb_substr($str, $start, $length, $charset); } // 如果iconv_substr函数存在,则使用该函数 elseif(function_exists('iconv_substr')){ $slice = iconv_substr($str, $start, $length, $charset); } // 如果上述函数都不存在,采用正则表达式进行匹配截取 else { // 根据不同的字符集定义正则表达式 $re['utf-8'] = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/"; $re['gb2312'] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/"; $re['gbk'] = "/[x01-x7f]|[x81-xfe][x40-xfe]/"; $re['big5'] = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/"; preg_match_all($re[$charset], $str, $match); $slice = join("",array_slice($match[0], $start, $length)); } // 当截取的字符串长度小于原字符串时,添加省略号 $fix=''; if(strlen($slice) < strlen($str)){ $fix='...'; } // 是否在截取后追加省略号 return $suffix ? $slice.$fix : $slice; } ``` 在前端页面中,我们可以使用`msubstr`函数来截取标题或其他文本内容,例如: ```html {$v.title|msubstr=0,5} ``` 这里,`{$v.title}`是变量,`msubstr`是过滤器,`0`是开始位置,`5`是要截取的字符数。如果需要在截取后添加省略号,可以保持默认的`true`值;如果不添加,可以传入`false`。 在案例中,`NewsList`方法展示了如何在控制器中使用`msubstr`函数。它首先获取新闻列表,然后将数据分配给视图,视图中可以通过`{$news}`变量访问这些数据,并通过`msubstr`函数截取标题。同时,该方法还使用了`Page`类进行分页,以便用户可以浏览多个页面的新闻。 `msubstr`函数是ThinkPHP模板中处理中文字符串截取的关键工具,尤其在不支持多字节字符集的环境中。了解并熟练使用这个函数,可以有效解决中文字符串截取问题,提高网站或应用的用户体验。

























- 粉丝: 20
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 实训报告-网页制作与网站建设项目实战.doc
- 试论互联网+时代事业单位档案管理创新.docx
- PLC控制中央空调节能改造方案设计书1.doc
- 互联网+会计时代-高职《管理会计》课程改革探究.docx
- 基于SNAP网络的实验室监控系统研究设计.doc
- 嵌入式系统程序可移植性设计方案及性能优化.doc
- 单片机电子台历设计方案.docx
- 2017年广西公需科目-“互联网+”开放合作考试及标准答案2(90分).docx
- 抢答器PLC控制系统设计-河南工业大学.doc
- 培训师大计算机采集处理系统.pptx
- 大数据在健康医疗行业中应用概况.pptx
- 慧锦校园网络布线系统措施设计方案.doc
- 机械产品和零件的计算机辅助设计.docx
- 《数据库课程设计方案》实验任务书学时.doc
- 项目管理中如何建立高绩效的研发项目团队.docx
- 基于51单片机的多路温度采集控制系统方案设计书.doc



评论0