浅析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
透析PHP的配置文件php.ini
Oct 09 PHP
php xml留言板 xml存储数据的简单例子
Aug 24 PHP
火车采集器 免费版使出收费版本功能实现原理
Sep 17 PHP
php通过Chianz.com获取IP地址与地区的方法
Jan 14 PHP
php+mysql实现无限分类实例详解
Jan 15 PHP
DEDECMS首页调用图片集里的多张图片
Jun 05 PHP
PHP中phar包的使用教程
Jun 14 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
May 12 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
Sep 26 PHP
PHP校验15位和18位身份证号的类封装
Nov 07 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 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时间计算相关问题小结
2016/05/09 PHP
php语言注释,单行注释和多行注释
2018/01/21 PHP
php实现websocket实时消息推送
2018/03/30 PHP
jquery png 透明解决方案(推荐)
2010/08/21 Javascript
在JavaScript中获取请求的URL参数
2010/12/22 Javascript
JS高级笔记
2011/07/13 Javascript
javascript动态的改变IFrame的高度实现自动伸展
2013/10/12 Javascript
从数组中随机取x条不重复数据的JS代码
2013/12/24 Javascript
JS中操作JSON总结
2020/12/06 Javascript
JavaScript File API文件上传预览
2016/02/02 Javascript
Jquery组件easyUi实现表单验证示例
2016/08/23 Javascript
在vue 中使用 less的教程详解
2018/09/26 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
2019/03/13 Javascript
vue elementUI使用tabs与导航栏联动
2019/06/21 Javascript
用Angular实现一个扫雷的游戏示例
2020/05/15 Javascript
[47:03]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第二场 12.10
2020/12/13 DOTA
python两种遍历字典(dict)的方法比较
2014/05/29 Python
python新手经常遇到的17个错误分析
2014/07/30 Python
用python找出那些被“标记”的照片
2017/04/20 Python
python解决pandas处理缺失值为空字符串的问题
2018/04/08 Python
python实现QQ批量登录功能
2019/06/19 Python
matplotlib jupyter notebook 图像可视化 plt show操作
2020/04/24 Python
python/golang 删除链表中的元素
2020/09/14 Python
python ssh 执行shell命令的示例
2020/09/29 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
英国在线汽车和面包车零件商店:Car Parts 4 Less
2018/08/15 全球购物
Rhone官方网站:男士运动服装、健身服装和高级运动服
2019/05/01 全球购物
Hanky Panky官方网站:内衣和睡衣
2019/07/25 全球购物
教师评优的个人自我评价分享
2013/09/19 职场文书
宿舍打麻将检讨书
2014/01/24 职场文书
服务行业演讲稿
2014/09/02 职场文书
简历自荐信范文
2015/03/09 职场文书
离职信范文
2015/06/23 职场文书
详解Python+OpenCV进行基础的图像操作
2022/02/15 Python
在SQL Server中使用 Try Catch 处理异常的示例详解
2022/07/15 SQL Server
使用JS前端技术实现静态图片局部流动效果
2022/08/05 Javascript