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编程语言开发动态WAP页面
Oct 09 PHP
Windows下利用Gvim写PHP产生中文乱码问题解决方法
Apr 20 PHP
打造超酷的PHP数据饼图效果实现代码
Nov 23 PHP
php检测图片木马多进制编程实践
Apr 11 PHP
php cli换行示例
Apr 22 PHP
Smarty模板学习笔记之Smarty简介
May 20 PHP
PHP实现的一致性哈希算法完整实例
Nov 14 PHP
Symfony2学习笔记之系统路由详解
Mar 17 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
Aug 14 PHP
thinkPHP框架中执行原生SQL语句的方法
Oct 25 PHP
详解PHP神奇又有用的Trait
Mar 25 PHP
PHP优化之批量操作MySQL实例分析
Apr 23 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
人族 TERRAN 概述
2020/03/14 星际争霸
session在php5.3中的变化 session_is_registered() is deprecated in
2013/11/12 PHP
php计算整个mysql数据库大小的方法
2015/06/19 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
基于jQuery的消息提示插件之旅 DivAlert(三)
2010/04/01 Javascript
iScroll中事件点击触发两次解决方案
2015/03/11 Javascript
js本地图片预览实现代码
2016/10/09 Javascript
JavaScript中splice与slice的区别
2017/05/09 Javascript
JavaScript数据结构之单链表和循环链表
2017/11/28 Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
2018/10/12 Javascript
实用的Vue开发技巧
2019/05/30 Javascript
JavaScript实现身份证验证代码实例
2019/08/26 Javascript
jquery实现聊天机器人
2020/02/08 jQuery
vue中的循环对象属性和属性值用法
2020/09/04 Javascript
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
Python调用C/C++动态链接库的方法详解
2014/07/22 Python
python简单读取大文件的方法
2016/07/01 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
Python选择网卡发包及接收数据包
2019/04/04 Python
Python箱型图绘制与特征值获取过程解析
2019/10/22 Python
详解Python中Pyyaml模块的使用
2020/10/08 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
CSS3中动画属性transform、transition和animation属性的区别
2016/09/25 HTML / CSS
使用javascript和HTML5 Canvas画的四渐变色播放按钮效果
2014/04/10 HTML / CSS
AJax面试题
2014/11/25 面试题
面试后的感谢信范文
2014/02/01 职场文书
廉洁自律演讲稿
2014/05/22 职场文书
2014年银行个人工作总结
2014/12/05 职场文书
工作表扬信
2015/01/17 职场文书
女方家长婚礼致辞
2015/07/27 职场文书
《鲸》教学反思
2016/02/23 职场文书
幼儿园科学课教学反思
2016/03/03 职场文书
英语版自我评价,35句话轻松搞定
2019/10/08 职场文书
MySQL令人咋舌的隐式转换
2021/04/05 MySQL
Mysql MVCC机制原理详解
2021/04/20 MySQL
详解Redis实现限流的三种方式
2021/04/27 Redis