thinkphp中字符截取函数msubstr()用法分析


Posted in PHP onJanuary 09, 2016

本文实例讲述了thinkphp中字符截取函数msubstr()用法。分享给大家供大家参考,具体如下:

ThinkPHP有一个内置字符截取函数msubstr()如下:

msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)

$str:要截取的字符串
$start=0:开始位置,默认从0开始
$length:截取长度
$charset="utf-8":字符编码,默认UTF-8
$suffix=true:是否在截取后的字符后面显示省略号,默认true显示,false为不显示

调用如下

{$vo.title|msubstr=5,5,'utf-8',false}

解释:截取字符串$vo.title,从第5个字符开始,截取5个,编码为UTF-8,不显示省略号

最近在用thinkphp写程序的时候遇到  Call to undefined function msubstr() 这样一个报错,

原因分析:

在前台模板中用到了msubstr|msubstr=###,5,5,'utf-8',false 这个函数来截取字符数量;

问题出现:

开始在本地写的时候是windows操作系统没报错,后来把项目上传到Linux服务器的时候访问前台报Call to undefined function msubstr()这个错;

问题排除:

开始在think官方看到有小伙伴们贴出来了要在公共函数库下定义这个函数;函数如下:

function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=false){
 if(function_exists("mb_substr")){
 if($suffix)
 return mb_substr($str, $start, $length, $charset)."...";
 else
 return mb_substr($str, $start, $length, $charset);
 }elseif(function_exists('iconv_substr')) {
 if($suffix)
 return iconv_substr($str,$start,$length,$charset)."...";
 else
 return iconv_substr($str,$start,$length,$charset);
 }
 $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));
 if($suffix) return $slice."…";
 return $slice;
}

定义完之后在本地可以使用;也看到有小伙伴们说要把这个函数放到Thinkphp核心函数文件下可以解决Call to undefined function msubstr()报错问题,放在自己的项目Common目录下的common.php下说无效,但是不想改动Think的核心文件方便 以后升级;

解决方案:

还是Linx下的文件大小写问题,经我仔细查看发现,由于项目不会自动生成common.php要手动建,原来我在本地项目下的Common下的common.php的C写成了大写,然后查看官方的核心Common下的common.php的C是小写。最后把他改成小写问题解决;

记录一下,避免以后再犯这种低级错误!

更多关于thinkPHP相关内容感兴趣的朋友可查看本站专题:《ThinkPHP入门教程》及《ThinkPHP常用方法总结》

希望本文所述对大家基于thinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP中的日期处理方法集锦
Jan 02 PHP
php获取网页内容方法总结
Dec 04 PHP
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
Dec 29 PHP
php 无法加载mysql的module的时候的配置的解决方案引发的思考
Jan 27 PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
Feb 28 PHP
php中session过期时间设置及session回收机制介绍
May 05 PHP
Smarty foreach控制循环次数的一些方法
Jul 01 PHP
PHP数据库表操作的封装类及用法实例详解
Jul 12 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
Sep 27 PHP
PHP函数积累总结
Mar 19 PHP
PHP进阶学习之类的自动加载机制原理分析
Jun 18 PHP
PHP超全局变量实现原理及代码解析
Sep 01 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
Jan 09 #PHP
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
Jan 09 #PHP
yii2中使用Active Record模式的方法
Jan 09 #PHP
YII2.0之Activeform表单组件用法实例
Jan 09 #PHP
yii2中添加验证码的实现方法
Jan 09 #PHP
PHP中的数组处理函数实例总结
Jan 09 #PHP
详解WordPress开发中用于获取分类及子页面的函数用法
Jan 08 #PHP
You might like
利用PHP动态生成VRML网页
2006/10/09 PHP
thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
2016/04/27 PHP
PHP写的简单数字验证码实例
2017/05/23 PHP
Extjs入门之动态加载树代码
2010/04/09 Javascript
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
jQuery 选择表格(table)里的行和列及改变简单样式
2012/12/15 Javascript
javascript实现rgb颜色转换成16进制格式
2015/07/10 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
微信小程序中顶部导航栏的实现代码
2017/03/30 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
JS代码简洁方式之函数方法详解
2020/07/28 Javascript
JS sort排序详细使用方法示例解析
2020/09/27 Javascript
微信小程序实现文件预览
2020/10/22 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
2020/10/22 Javascript
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
教你学会使用Python正则表达式
2017/09/07 Python
pandas数据预处理之dataframe的groupby操作方法
2018/04/13 Python
PyCharm 创建指定版本的 Django(超详图解教程)
2019/06/18 Python
python常用排序算法的实现代码
2019/11/08 Python
Python xlrd excel文件操作代码实例
2020/03/10 Python
Python try except else使用详解
2021/01/12 Python
python的scipy.stats模块中正态分布常用函数总结
2021/02/19 Python
利用CSS3实现文本框的清除按钮相关的一些效果
2015/06/23 HTML / CSS
艺术家策划的室内设计:Curious Egg
2019/03/06 全球购物
几个Linux面试题笔试题
2016/08/01 面试题
大学生大二自我鉴定
2013/10/28 职场文书
精彩的大学生自我评价
2013/11/17 职场文书
仓库主管的岗位职责
2013/12/04 职场文书
《埃及的金字塔》教学反思
2014/04/07 职场文书
人事文员岗位职责
2015/02/04 职场文书
写给同事的离职感言
2015/08/04 职场文书
带你彻底理解JavaScript中的原型对象
2021/04/14 Javascript
GTX1660显卡搭配显示器推荐
2022/04/19 数码科技
SpringBoot 集成短信和邮件 以阿里云短信服务为例
2022/04/22 Java/Android