浅析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+SqlServer实现分页显示
Oct 09 PHP
如何将数据从文本导入到mysql
Oct 09 PHP
php遍历所有文件及文件夹的方法深入解析
Jun 08 PHP
如何用php获取文件名后缀
Jun 09 PHP
学习php过程中的一些注意点的总结
Oct 25 PHP
CI(CodeIgniter)框架中的增删改查操作
Jun 10 PHP
php的sso单点登录实现方法
Jan 08 PHP
thinkPHP中分页用法实例分析
Dec 26 PHP
crontab无法执行php的解决方法
Jan 25 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
Nov 17 PHP
PHP延迟静态绑定的深入讲解
Apr 02 PHP
PHP7.3.10编译安装教程
Oct 08 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
德生PL990,目前市面上唯一一款便携式插卡蓝牙全波段高性能收音机
2021/03/02 无线电
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
2014/12/15 PHP
php有效防止同一用户多次登录
2015/11/19 PHP
php 获取xml接口数据的处理方法
2018/05/31 PHP
jMessageBox 基于jQuery的窗口插件
2009/12/09 Javascript
利用javascript数组长度循环数组内所有元素
2013/12/27 Javascript
js获取页面传来参数的方法
2014/09/06 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
2015/11/06 Javascript
jQuery解析json格式数据简单实例
2016/01/22 Javascript
JS模拟实现方法重载示例
2016/08/03 Javascript
jquery版轮播图效果和extend扩展
2017/07/18 jQuery
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
nodejs 图解express+supervisor+ejs的用法(推荐)
2017/09/08 NodeJs
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
mescroll.js上拉加载下拉刷新组件使用详解
2017/11/13 Javascript
使用live-server快速搭建本地服务器+自动刷新的方法
2018/03/09 Javascript
微信小程序实现轨迹回放的示例代码
2019/12/13 Javascript
JavaScript适配器模式原理与用法实例详解
2020/03/09 Javascript
js实现简单扫雷
2020/11/27 Javascript
nuxt 路由、过渡特效、中间件的实现代码
2020/11/06 Javascript
[10:54]Team Spirit vs Navi
2018/06/07 DOTA
Python解决鸡兔同笼问题的方法
2014/12/20 Python
CentOS7.3编译安装Python3.6.2的方法
2018/01/22 Python
获取django框架orm query执行的sql语句实现方法分析
2019/06/20 Python
如何理解Python中包的引入
2020/05/29 Python
Python小白垃圾回收机制入门
2020/06/09 Python
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
New Balance澳大利亚官网:运动鞋和健身服装
2019/02/23 全球购物
女孩每月服装订阅盒:kidpik
2019/04/17 全球购物
Ruby中的保护方法和私有方法与一般面向对象程序设计语言的一样吗
2013/05/01 面试题
介绍一下SOA和SOA的基本特征
2016/02/24 面试题
高校群众路线教育实践活动剖析材料
2014/10/10 职场文书
限期整改通知书
2015/04/22 职场文书
银行岗位培训心得体会
2016/01/09 职场文书
mybatis3中@SelectProvider传递参数方式
2021/08/04 Java/Android