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 相关文章推荐
无刷新动态加载数据 滚动条加载适合评论等页面
Oct 16 PHP
PHP按行读取、处理较大CSV文件的代码实例
Apr 09 PHP
php返回字符串中所有单词的方法
Mar 09 PHP
php备份数据库类分享
Apr 14 PHP
php关联数组快速排序的方法
Apr 17 PHP
Adnroid 微信内置浏览器清除缓存
Jul 11 PHP
用PHP的socket实现客户端到服务端的通信实例详解
Feb 04 PHP
YII2框架中使用yii.js实现的post请求
Apr 09 PHP
PHP实现执行外部程序的方法详解
Aug 17 PHP
详细解读php的命名空间(一)
Feb 21 PHP
PHP中上传文件打印错误错误类型分析
Apr 14 PHP
Yii框架操作cookie与session的方法实例详解
Sep 04 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 XML备份Mysql数据库
2009/05/27 PHP
php实例分享之二维数组排序
2014/05/15 PHP
Laravel中间件实现原理详解
2016/10/09 PHP
jQuery的deferred对象使用详解
2011/08/20 Javascript
JS函数实现动态添加CSS样式表文件
2012/12/15 Javascript
JQuery制作的放大效果的popup对话框(未添加任何jquery plugin)分享
2013/04/28 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
2014/01/10 Javascript
Node.js中使用计时器定时执行函数详解
2014/08/15 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
JS实现状态栏跑马灯文字效果代码
2015/10/24 Javascript
js自调用匿名函数的三种写法(推荐)
2016/08/19 Javascript
浅谈jquery之on()绑定事件和off()解除绑定事件
2016/10/26 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
2019/05/03 Javascript
微信小程序如何使用canvas二维码保存至手机相册
2019/07/15 Javascript
layer.open 子页面弹出层向父页面传输数据的例子
2019/09/26 Javascript
vue 对axios get pust put delete封装的实例代码
2020/01/05 Javascript
Nest.js 授权验证的方法示例
2021/02/22 Javascript
python中的代码编码格式转换问题
2015/06/10 Python
Python科学计算之Pandas详解
2017/01/15 Python
Python使用微信SDK实现的微信支付功能示例
2017/06/30 Python
Python编程pygame模块实现移动的小车示例代码
2018/01/03 Python
基于树莓派的语音对话机器人
2019/06/17 Python
python实现数字炸弹游戏程序
2020/07/17 Python
Python sqlalchemy时间戳及密码管理实现代码详解
2020/08/01 Python
详解CSS3选择器:nth-child和:nth-of-type之间的差异
2017/09/18 HTML / CSS
H&M美国官网:欧洲最大的服饰零售商
2016/09/07 全球购物
英国地毯卖家:The Rug Seller
2019/07/18 全球购物
法国春天百货官网:Printemps.com
2020/06/29 全球购物
毕业生就业意向书
2014/04/01 职场文书
安全责任书范本
2014/04/15 职场文书
跳槽求职信范文
2014/05/26 职场文书
关于青春的演讲稿800字
2014/08/22 职场文书
超市工作总结范文2014
2014/12/19 职场文书
色戒观后感
2015/06/12 职场文书
大学班长竞选稿
2015/11/20 职场文书
初任公务员培训心得体会
2016/01/08 职场文书