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 远程关机操作的代码
Dec 05 PHP
PHP中“简单工厂模式”实例代码讲解
Sep 04 PHP
解析PHP中如何将数组变量写入文件
Jun 06 PHP
php jsonp单引号转义
Nov 23 PHP
php中curl使用指南
Feb 05 PHP
Laravel实现构造函数自动依赖注入的方法
Mar 16 PHP
PHP二分查找算法示例【递归与非递归方法】
Sep 29 PHP
php 截取utf-8格式的字符串实例代码
Oct 30 PHP
PHP使用ActiveMQ实例
Feb 05 PHP
PHP生成腾讯云COS接口需要的请求签名
May 20 PHP
PHP7 mongoDB扩展使用的方法分享
May 02 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 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 生成WML页面方法详解
2009/08/09 PHP
php以post形式发送xml的方法
2014/11/04 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
PHP数据分析引擎计算余弦相似度算法示例
2017/08/08 PHP
laravel框架数据库配置及操作数据库示例
2019/10/10 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
Prototype使用指南之dom.js
2007/01/10 Javascript
浅谈JS日期(Date)处理函数
2014/12/07 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
通过伪协议解决父页面与iframe页面通信的问题
2015/04/05 Javascript
AngularJS 单元测试(二)详解
2016/09/21 Javascript
Vue.js第四天学习笔记
2016/12/02 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
2016/12/16 Javascript
javacript replace 正则取字符串中的值并替换【推荐】
2018/09/13 Javascript
详解angular2如何手动点击特定元素上的点击事件
2018/10/16 Javascript
vue.js中ref和$refs的使用及示例讲解
2019/08/14 Javascript
vue开发chrome插件,实现获取界面数据和保存到数据库功能
2020/12/01 Vue.js
python版本坑:md5例子(python2与python3中md5区别)
2017/06/20 Python
Python实现发送QQ邮件的封装
2017/07/14 Python
Python实现base64编码的图片保存到本地功能示例
2018/06/22 Python
解决python读取几千万行的大表内存问题
2018/06/26 Python
python+rsync精确同步指定格式文件
2019/08/29 Python
python的scipy实现插值的示例代码
2019/11/12 Python
基于pycharm实现批量修改变量名
2020/06/02 Python
详解python中的三种命令行模块(sys.argv,argparse,click)
2020/12/15 Python
Flask处理Web表单的实现方法
2021/01/31 Python
用canvas画心电图的示例代码
2018/09/10 HTML / CSS
斯德哥尔摩通票:Stockholm Pass
2018/01/09 全球购物
英国时尚优质的女装:Hope Fashion
2018/08/14 全球购物
HomeAway英国:全球领先的度假租赁在线市场
2020/02/03 全球购物
Kipling澳洲官网:购买凯浦林包包
2020/12/17 全球购物
override和overload的区别
2016/03/09 面试题
如何清空Session
2015/02/23 面试题
介绍信范文
2015/01/31 职场文书
党支部考察意见范文
2015/06/02 职场文书
sql server偶发出现死锁的解决方法
2022/04/10 SQL Server