php中msubstr,PHP学习:thinkphp中字符截取函数msubstr()用法分析

《PHP学习:thinkphp中字符截取函数msubstr()用法分析》要点:

本文介绍了PHP学习:thinkphp中字符截取函数msubstr()用法分析,希望对您有用。如果有疑问,可以联系我们。

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

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

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

$str:要截取的字符串

$start=0:开始位置,默认从0开始

$length:截取长度

$charset="utf-8":字符编码,默认UTF-8

$suffix=true:是否在截取后的字符后面显示省略号,默认true显示,false为不显示PHP教程

调用如下PHP教程

代码如下:

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

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

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

原因分析:PHP教程

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

问题出现:PHP教程

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

问题排除:PHP教程

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

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的核心文件方便 以后升级;PHP教程

办理方案:PHP教程

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

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

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

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

维易PHP培训学院每天发布《PHP学习:thinkphp中字符截取函数msubstr()用法分析》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532824.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VS Code的Error: Running the contributed command: ‘_workbench.downloadResource‘ failed解决

VS Code的Error: Running the contributed command: _workbench.downloadResource failed解决 转自:https://blog.csdn.net/ibless/article/details/118610776 1 问题描述 此前,本人参考网上教程在VS Code中配置了“Remote SSH”插件(比如这…

Oracle闪回报错,oracle 闪回区满了,ORA-19815

oracle 闪回区满了,查看日志报错:ORA-19815,命令行输入:sqlplus / as sysdbastartup mount //如果你的数据库出现了无法连接的情况时,可以加上这句select file_type, percent_space_used as used,percent_space_rec…

[2021-ICCV] MUSIQ Multi-scale Image Quality Transformer 论文简析

[2021-ICCV] MUSIQ: Multi-scale Image Quality Transformer 论文简析 论文:https://arxiv.org/abs/2108.05997 代码:https://github.com/google-research/google-research/tree/master/musiq 概述 当前SOTA的IQA(图像质量评估&#xff0…

安装oracle不动了,windows2008安装ORACLE到2%不动的问题 | 信春哥,系统稳,闭眼上线不回滚!...

最近又有网友遇到在windows2008服务器上安装ORACLE软件时到2%就卡住不动的问题,下面是该网友的描述:oralce 11g r2 windows server 2008 R2安装到最后一步复制数据文件时卡到2% 不走了内存一直飙升求解决这个问题前段时间也有人遇到过,但是他…

手把手教你入门Git --- Git使用指南(Linux)

手把手教你入门Git — Git使用指南(Linux) 系统:ubuntu 18.04 LTS 本文所有git命令操作实验具有连续性,git小白完全可以从头到尾跟着本文所有给出的命令走一遍,就会对git有一个初步的了解,应当能做到会用并…

linux修改主机名后oracle em控制台起不来,更改计算机名后导致Oracle dbconsole无法启动问题解决方法...

今天不知道哪根筋搭歪了,看着Oracle EM控制台的主机名WIN-LOSGI0TCOG0乱七八糟的很不爽,就把它给改了。然后Oracle EM就上不去了,Oracledbconsole服务起不来,我尝试把所有“WIN-LOSGI0TCOG0”替换成“ggsjy”,找了好多…

Shell脚本多行换行报错:- unrecognized arguments- \

shell error: unrecognized arguments: \ 在使用linux长命令时,我们通常会用一个shell脚本加\分行的形式来更清晰展示参数。 这时有一个注意事项:在\后必须紧跟回车, 否则会导致后面的参数无法传入。因为这时程序会将后面的参数算作一条新命…

shell脚本长命令带换行 注释方法

shell脚本长命令带换行 注释方法 命令行传参 在训练深度学习网络时,我们每次实验通常会有许多超参数需要设置,如batch size, epoch, gpu id, arch甚至还有一些具体的模型结构等。这事我们通常使用python模块argparse,在命令行进行传参。 比…

php对中英文字符串进行截取,利用php怎么对中英文混合的字符串进行截取

利用php怎么对中英文混合的字符串进行截取发布时间:2021-01-04 15:31:24来源:亿速云阅读:103作者:Leah利用php怎么对中英文混合的字符串进行截取?很多新手对此不是很清楚,为了帮助大家解决这个难题&#xf…

Linux查找命令find、loacte、whereis、which、type梳理

Linux查找命令find、loacte、whereis、which、type梳理 Linux操作系统中有5种常用的查找命令:find,locate,whereis,which,type,他们分别用于查找不同的东西,本文将就他们各自的功能进行一下梳理…

php数据关系图,如何利用navicat查看数据表的ER关系图

文章背景:(相关推荐:navicat)由于工作需要,现在要分析一个数据库,然后查看各个表之间的关系,所以需要查看表与表之间的关系图,专业术语叫做ER关系图。默认情况下,Navicat显示的界面是这样的&…

Linux软链接的使用

Linux软链接的使用 转自:https://www.cnblogs.com/sueyyyy/p/10985443.html,本博文仅对原博排版稍微优化。 更为细致的硬链接、软链接的介绍可参考:Linux中的硬链接和软链接 另外,提供笔者对软连接的一个最简单的理解&#xff…

oracle死锁优化,Oracle性能优化之LockContention(转)

1、概念DML事务使用row-level locks,查询不会锁定数据。锁有两种模式:exlusive、share。锁的类型:• DML or data locks:– Table-level locks(TM)– Row-level locks(TX)• DDL or dictionary locks一个transaction至少获得两个锁:一个共享的…

Linux中g++与gcc的区别

转自:https://blog.csdn.net/bit_clearoff/article/details/53965514 Windows中我们常用vs来编译编写好的C和C代码;vs把编辑器,编译器和调试器等工具都集成在这一款工具中,在Linux下我们能用什么工具来编译所编写好的代码呢&#…

linux系统可以用迅雷吗,在Linux系统下使用wine运行迅雷5的方法

在Linux系统下使用wine运行迅雷5的方法一、下载ies4linux去 http://www.tatanka.com.br/ies4linux/page/Installation 下载ies4linux的文件包(目前版本为2.99),然后解压缩。注意:这个网站被大陆和谐了,需要跳墙。至于怎么跳,诸位就…

从C源代码到可执行文件的四个过程:预处理、编译、汇编、链接

从C源代码到可执行文件的四个过程:预处理、编译、汇编、链接 总览 我们将在Linux操作系统中,以C语言的Hello World程序为例,用gcc编译器分步执行这四个步骤。 我们有再熟悉不过的HelloWorld程序,hello.c: #include …

uboot引导linux内核,u-boot启动内核的几种方式

1.uboot启动内核的代码缩减如下:s getenv ("bootcmd");debug ("### main_loop: bootcmd\"%s\"\n", s ? s : "");if (bootdelay > 0 && s && !abortboot (bootdelay)){run_command (s, 0);}2.假设boot…

跟我一起写makefile: 概述、介绍、规则

跟我一起写makefile 概述、介绍、规则 转自:https://seisman.github.io/how-to-write-makefile/rules.html 概述 什么是makefile?或许很多Windows的程序员都不知道这个东西,因为那些Windows的集成开发环境(integrated developm…

linux内核中cent文件夹,Centos 中如何快速定制二进制的内核 RPM 包

1、rpm 制作前的环境准备:yum install -y ncurses-devel qt-devel rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed xmlto audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel newt-devel python-devel zlib-devel bc2、准…

TabError- inconsistent use of tabs and spaces in indentation 查验及解决方法

TabError: inconsistent use of tabs and spaces in indentation 查验及解决方法 报错代码 def eccv16(pretrainedTrue):model ECCVGenerator()if(pretrained):import torch.utils.model_zoo as model_zoomodel.load_state_dict(torch.load(/home/ps/.cache/torch/hub/check…