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 Ctemplate引擎开发相关内容
Mar 03 PHP
浅析php中常量,变量的作用域和生存周期
Aug 10 PHP
php中使用session防止用户非法登录后台的方法
Jan 27 PHP
PHP中trim()函数简单使用指南
Apr 16 PHP
PHP加密解密字符串汇总
Apr 26 PHP
PHP图像处理类库MagickWand用法实例分析
May 21 PHP
PHP使用CURL模拟登录的方法
Jul 08 PHP
PHP简单实现冒泡排序的方法
Dec 26 PHP
详解PHP PDO简单教程
May 28 PHP
Centos7 Yum安装PHP7.2流程教程详解
Jul 02 PHP
Smarty缓存机制实例详解【三种缓存方式】
Jul 20 PHP
laravel 中某一字段自增、自减的例子
Oct 11 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
各种咖啡的英文名子是什么
2021/03/03 新手入门
PHP的范围解析操作符(::)的含义分析说明
2011/07/03 PHP
php中截取中文字符串的代码小结
2011/07/17 PHP
让ThinkPHP支持大小写url地址访问的方法
2014/10/31 PHP
PHP中的一些常用函数收集
2015/05/26 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
奇妙的js
2007/09/24 Javascript
jquery cookie插件代码类
2009/05/26 Javascript
点击弹出层效果&弹出窗口后网页背景变暗效果的实现代码
2014/02/10 Javascript
JavaScript中创建字典对象(dictionary)实例
2015/03/31 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
Boostrap基础教程之JavaScript插件篇
2016/09/08 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
Nodejs中使用captchapng模块生成图片验证码
2017/05/18 NodeJs
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
教你5分钟学会用requirejs(必看篇)
2017/07/25 Javascript
[01:05:29]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第二场 1月24日
2021/03/11 DOTA
Python代码调试的几种方法总结
2015/04/15 Python
Python ldap实现登录实例代码
2016/09/30 Python
Python中循环引用(import)失败的解决方法
2018/04/22 Python
python处理csv中的空值方法
2018/06/22 Python
Python3模拟登录操作实例分析
2019/03/12 Python
python实现动态创建类的方法分析
2019/06/25 Python
预订奥兰多和佛罗里达州公园门票:FloridaTix
2018/01/03 全球购物
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
Priority Pass机场贵宾室会籍计划:全球超过1200间机场贵宾室
2018/08/26 全球购物
超市商业计划书
2014/05/04 职场文书
英语求职信范文
2014/05/23 职场文书
爱护草坪标语
2014/06/24 职场文书
员工教育培训协议书
2014/09/27 职场文书
2014年监理工作总结范文
2014/11/17 职场文书
文明班级申报材料
2014/12/24 职场文书
工作推荐信模板
2015/03/25 职场文书
昆虫记读书笔记
2015/06/26 职场文书
《语言的突破》读后感3篇
2019/12/12 职场文书
Redis实战之Lettuce的使用技巧详解
2022/12/24 Redis