浅析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 jquery 实现新闻标签分类与无刷新分页
Dec 18 PHP
php绝对路径与相对路径之间关系的的分析
Mar 03 PHP
php5 apache 2.2 webservice 创建与配置(java)
Jan 27 PHP
PHP求小于1000的所有水仙花数的代码
Jan 10 PHP
PHP中的Memcache详解
Apr 05 PHP
ucenter通信原理分析
Jan 09 PHP
PHP中file_exists使用中遇到的问题小结
Apr 05 PHP
php生成txt文件实例代码介绍
Apr 28 PHP
PHP开发APP端微信支付功能
Feb 17 PHP
Laravel中10个有用的用法小结
May 06 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
Sep 23 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
Oct 10 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天翼开放平台短信发送接口实现方法
2014/12/22 PHP
PHP一致性hash分布式算法封装类定义与用法示例
2018/08/04 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
checkbox 多选框 联动实现代码
2008/10/22 Javascript
通过jQuery打造支持汉字,拼音,英文快速定位查询的超级select插件
2010/06/18 Javascript
判断ie的两种简单方法
2013/08/12 Javascript
javascript自动给文本url地址增加链接的方法分享
2014/01/20 Javascript
js操纵dom生成下拉列表框的方法
2014/02/24 Javascript
JavaScript lastIndexOf方法入门实例(计算指定字符在字符串中最后一次出现的位置)
2014/10/17 Javascript
JavaScript将数组转换成CSV格式的方法
2015/03/19 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
2015/05/16 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
2016/04/18 Javascript
jQuery实现的自定义滚动条实例详解
2016/09/20 Javascript
IE8兼容Jquery.validate.js的问题
2016/12/01 Javascript
Angular 常用指令实例总结整理
2016/12/13 Javascript
微信小程序 自定义对话框实例详解
2017/01/20 Javascript
vue中使用protobuf的过程记录
2018/10/26 Javascript
vue 父组件给子组件传值子组件给父组件传值的实例代码
2019/04/15 Javascript
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
2019/06/13 Javascript
node.js 微信开发之定时获取access_token
2020/02/07 Javascript
利用Python获取赶集网招聘信息前篇
2016/04/18 Python
tf.truncated_normal与tf.random_normal的详细用法
2018/03/05 Python
python实现统计文本中单词出现的频率详解
2019/05/20 Python
Python集合操作方法详解
2020/02/09 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
2020/04/25 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
2020/07/06 Python
基于HTML5 audio元素播放声音jQuery小插件
2011/05/11 HTML / CSS
几个常见的消息中间件(MOM)
2014/01/08 面试题
内业资料员岗位职责
2014/01/04 职场文书
外贸专业求职信
2014/03/09 职场文书
《水上飞机》教学反思
2014/04/10 职场文书
2014领导班子四风问题对照检查材料思想汇报
2014/09/21 职场文书
党支部书记岗位职责
2015/02/15 职场文书
党小组鉴定意见
2015/06/02 职场文书
庆七一活动简报
2015/07/20 职场文书