浅析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 相关文章推荐
Get或Post提交值的非法数据处理
Oct 09 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
Mar 05 PHP
Windows下部署Apache+PHP+MySQL运行环境实战
Aug 31 PHP
PHP中使用memcache存储session的三种配置方法
Apr 05 PHP
Sublime里直接运行PHP配置方法
Nov 28 PHP
php中Array2xml类实现数组转化成XML实例
Dec 08 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
Dec 14 PHP
PHP中header函数的用法及其注意事项详解
Jun 13 PHP
php进程间通讯实例分析
Jul 11 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
Mar 18 PHP
PHP数组array类常见操作示例
May 15 PHP
PHP7生产环境队列Beanstalkd用法详解
May 19 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
1.PHP简介
2006/10/09 PHP
PHP静态文件生成类实例
2014/11/29 PHP
使用URL传输SESSION信息
2015/07/14 PHP
PHP面向对象详解(三)
2015/12/07 PHP
关于二级域名下使用一级域名下的COOKIE的问题
2011/11/07 Javascript
Jquery颜色选择器ColorPicker实现代码
2012/11/14 Javascript
JS等比例缩小图片尺寸的实例
2013/02/27 Javascript
javascript去掉前后空格的实例
2013/11/07 Javascript
js获取对象、数组的实际长度,元素实际个数的实现代码
2016/06/08 Javascript
为你的微信小程序体积瘦身详解
2017/05/20 Javascript
jQuery选择器之属性筛选选择器用法详解
2017/09/19 jQuery
react router 4.0以上的路由应用详解
2017/09/21 Javascript
JS实现的视频弹幕效果示例
2018/08/17 Javascript
postman自定义函数实现 时间函数的思路详解
2019/04/17 Javascript
JavaScript多种滤镜算法实现代码实例
2019/12/10 Javascript
Node 模块原理与用法详解
2020/05/13 Javascript
Vue实现todo应用的示例
2021/02/20 Vue.js
Python(Tornado)模拟登录小米抢手机
2013/11/12 Python
Python中输出ASCII大文字、艺术字、字符字小技巧
2015/04/28 Python
python类和继承用法实例
2015/07/07 Python
利用Python如何将数据写到CSV文件中
2018/06/05 Python
python selenium 查找隐藏元素 自动播放视频功能
2019/07/24 Python
python使用ctypes调用扩展模块的实例方法
2020/01/28 Python
python实现引用其他路径包里面的模块
2020/03/09 Python
pip install 使用国内镜像的方法示例
2020/04/03 Python
tensorflow常用函数API介绍
2020/04/19 Python
如何安装并在pycharm使用selenium的方法
2020/04/30 Python
python RSA加密的示例
2020/12/09 Python
python实现学生通讯录管理系统
2021/02/25 Python
建筑装饰学院室内设计专业个人自我评价
2013/12/07 职场文书
银行简历自我评价
2014/02/11 职场文书
党员创先争优承诺书
2014/03/26 职场文书
贷款收入证明范本
2015/06/12 职场文书
军训通讯稿范文
2015/07/18 职场文书
医疗纠纷调解协议书
2015/08/06 职场文书
2016元旦晚会主持人开场白和结束语
2015/12/03 职场文书