浅析PHP substr,mb_substr以及mb_strcut的区别和用法


Posted in PHP onJune 21, 2013

PHP substr()函数可以 分割文字,但要分割的文字如果包括中文字符往往会遇到问题,这时可以用mb_substr()/mb_strcut这个函数,mb_substr() /mb_strcut的用法与substr()相似,只是在mb_substr()/mb_strcut最后要加入多一个参数,以设定字符串的编码,但是 一般的服务器都没打开php_mbstring.dll,需要在php.ini在把php_mbstring.dll打开。
举个例子:

<?php
echo mb_substr('这样一来我的字符串就不会有乱码^_^', 0, 7, 'utf-8');
?>

输出:这样一来我的字
<?php
echo mb_strcut('这样一来我的字符串就不会有乱码^_^', 0, 7, 'utf-8');
?>

输出:这样一
从上面的例子可以看出,mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,但是都不会产生半个字符的现象……
mbstring 函数的说明:
php的mbstring扩展模块提供了多字节字符的处理能力,平常最常用的就是用mbstring来切分多字节的中文字符,这样可以避免出现半个字符的情况,由于是php的扩展,它的性能也要比一些自定义的多字节切分函数要好上一些。
mbstring extension提供了几个功能类似的函数,mb_substr和mb_strcut,看看手册上对它们的解释。
mb_substr
mb_substr() returns the portion of str specified by the start and length parameters.
mb_substr() performs multi-byte safe substr() operation based on number of characters. Position is counted from the beginning of str. First character's position is 0. Second character position is 1, and so on.
mb_strcut
mb_strcut() returns the portion of str specified by the start and length parameters.
mb_strcut() performs equivalent operation as mb_substr() with different method. If start position is multi-byte character's second byte or larger, it starts from first byte of multi-byte character.
It subtracts string from str that is shorter than length AND character that is not part of multi-byte string or not being middle of shift sequence.

再举个例子,有一段文字, 分别用mb_substr和mb_strcut来做切分:
PLAIN TEXT
CODE:
<?php
$str = '我是一串比较长的中文-www.webjx.com';
echo "mb_substr:" . mb_substr($str, 0, 6, 'utf-8');
echo "<br>";
echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8');
?>

输出结果如下:
mb_substr:我是一串比较
mb_strcut:我是
PHP 相关文章推荐
PHP脚本数据库功能详解(下)
Oct 09 PHP
cache_lite试用
Feb 14 PHP
php下使用SimpleXML 处理XML 文件
Feb 27 PHP
php 获取select下拉列表框的值
May 08 PHP
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
Aug 01 PHP
PHP register_shutdown_function函数的深入解析
Jun 03 PHP
php网站被挂木马后的修复方法总结
Nov 06 PHP
什么是OneThink oneThink后台添加插件步骤
Apr 13 PHP
phpcms的分类名称和类别名称的调用
Jan 05 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
Apr 03 PHP
Laravel实现ORM带条件搜索分页
Oct 24 PHP
YII2框架中behavior行为的理解与使用方法示例
Mar 13 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
Jun 21 #PHP
解析php获取字符串的编码格式的方法(函数)
Jun 21 #PHP
浅析PHP页面局部刷新功能的实现小结
Jun 21 #PHP
解析php中var_dump,var_export,print_r三个函数的区别
Jun 21 #PHP
基于PHP文件操作的详细诠释
Jun 21 #PHP
解析php安全性问题中的:Null 字符问题
Jun 21 #PHP
浅析SVN常见问题及解决方法
Jun 21 #PHP
You might like
PHP实现邮件群发的源码
2013/06/18 PHP
PHP捕获Fatal error错误的方法
2014/06/11 PHP
PHP使用memcache缓存技术提高响应速度的方法
2014/12/26 PHP
php连接oracle数据库的方法(测试成功)
2016/05/26 PHP
php+redis在实际项目中HTTP 500: Internal Server Error故障排除
2017/02/05 PHP
jquery中的sortable排序之后的保存状态的解决方法
2010/01/28 Javascript
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
2013/05/13 Javascript
教你用jquery实现iframe自适应高度
2014/06/11 Javascript
ReactNative页面跳转实例代码
2016/09/27 Javascript
JavaScript中apply方法的应用技巧小结
2016/09/29 Javascript
浅析jQuery操作select控件的取值和设值
2016/12/07 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
2016/12/27 Javascript
简单实现nodejs上传功能
2017/01/14 NodeJs
基于Nodejs利用socket.io实现多人聊天室
2017/02/22 NodeJs
关于Node.js的events.EventEmitter用法介绍
2017/04/01 Javascript
H5手机端多文件上传预览插件
2017/04/21 Javascript
angular+webpack2实战例子
2017/05/23 Javascript
npm国内镜像 安装失败的几种解决方案
2017/06/04 Javascript
JS严格模式知识点总结
2018/02/27 Javascript
详解vuex之store源码简单解析
2019/06/13 Javascript
vue之debounce属性被移除及处理详解
2019/11/13 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
2020/07/28 Javascript
微信小程序实现点击生成随机验证码
2020/09/09 Javascript
Python学习之asyncore模块用法实例教程
2014/09/29 Python
Python数据类型详解(二)列表
2016/05/08 Python
深入浅出分析Python装饰器用法
2017/07/28 Python
Python3用tkinter和PIL实现看图工具
2018/06/21 Python
如何通过python实现IOU计算代码实例
2020/11/02 Python
微软澳洲官方网站:Microsoft Australia
2017/01/10 全球购物
幼儿园招生广告
2014/03/19 职场文书
员工合理化建议书
2014/05/19 职场文书
优秀的应届生自荐信
2014/05/23 职场文书
承诺书格式
2014/06/03 职场文书
践行党的群众路线心得体会
2014/11/05 职场文书
基于Redis结合SpringBoot的秒杀案例详解
2021/10/05 Redis
Python Pandas读取Excel日期数据的异常处理方法
2022/02/28 Python