浅析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 相关文章推荐
7个超级实用的PHP代码片段
Jul 11 PHP
CURL的学习和应用(附多线程实现)
Jun 03 PHP
学习php分页代码实例
Oct 24 PHP
PHP文件锁定写入实例解析
Jul 14 PHP
php使用ob_start()实现图片存入变量的方法
Nov 14 PHP
微信公众平台开发之天气预报功能
Aug 31 PHP
PHP加密解密函数详解
Oct 28 PHP
浅谈php中变量的数据类型判断函数
Mar 04 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
Apr 25 PHP
php微信公众号开发之答题连闯三关
Oct 20 PHP
Yii2框架中一些折磨人的坑
Dec 15 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 04 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输出表格的实现代码(修正版)
2010/12/29 PHP
Memcached常用命令以及使用说明详解
2013/06/27 PHP
PHP循环结构实例讲解
2014/02/10 PHP
PHP实现定时执行任务的方法
2014/10/05 PHP
Zend Framework入门教程之Zend_Session会话操作详解
2016/12/08 PHP
jquery提升性能最佳实践小结
2010/12/06 Javascript
javascript日期格式化示例分享
2014/03/05 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
2015/04/05 Javascript
浅析Node.js中的内存泄漏问题
2015/06/23 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
2016/12/13 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
2017/03/10 Javascript
js阻止默认右键的下拉菜单方法
2018/01/02 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
JavaScript 对引擎、运行时、调用堆栈的概述理解
2018/10/22 Javascript
JavaScript中构造函数与原型链之间的关系详解
2019/02/25 Javascript
实现elementUI表单的全局验证的方法步骤
2019/04/29 Javascript
基于postman获取动态数据过程详解
2020/09/08 Javascript
python实现媒体播放器功能
2018/02/11 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
python覆盖写入,追加写入的实例
2019/06/26 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
2020/10/15 Python
CSS3实战第一波 让我们尽情的圆角吧
2010/08/27 HTML / CSS
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
娇韵诗法国官网:Clarins法国
2019/01/29 全球购物
ECOSUSI官网:女式皮革背包
2019/09/27 全球购物
嘻哈珠宝品牌:KRKC&CO
2020/10/19 全球购物
全球最大化妆品零售网站:SkinStore
2020/10/24 全球购物
电子商务专业毕业生工作推荐信
2013/11/17 职场文书
大学生求职自我评价
2014/01/16 职场文书
文化建设工作方案
2014/05/12 职场文书
团支部推优材料
2014/05/21 职场文书
个人政风行风自查自纠报告
2014/10/21 职场文书
先进教师事迹材料
2014/12/16 职场文书
党员个人年度总结
2015/02/14 职场文书
大学团日活动总结书
2015/05/11 职场文书
vue实现同时设置多个倒计时
2021/05/20 Vue.js