浅析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 相关文章推荐
怎么样可以把 phpinfo()屏蔽掉?
Nov 24 PHP
将文件夹压缩成zip文件的php代码
Dec 14 PHP
php下网站防IP攻击代码,超级实用
Oct 24 PHP
php入门学习知识点七 PHP函数的基本应用
Jul 14 PHP
强烈声明: 不要使用(include/require)_once
Jun 06 PHP
对PHP语言认识上需要避免的10大误区
Jun 12 PHP
PHP中使用Imagick操作PSD文件实例
Jan 26 PHP
php实现遍历多维数组的方法
Nov 25 PHP
PHP生成短网址方法汇总
Jul 12 PHP
PHP+Ajax 检测网络是否正常实例详解
Dec 16 PHP
PHP二维关联数组的遍历方式(实例讲解)
Oct 18 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
Jan 23 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&amp;java(一)
2006/10/09 PHP
PHP中一个控制字符串输出的函数
2006/10/09 PHP
PHP 存储文本换行实现方法
2010/01/05 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
2017/10/23 PHP
分析 JavaScript 中令人困惑的变量赋值
2007/08/13 Javascript
IE与Firefox下javascript getyear年份的兼容性写法
2007/12/20 Javascript
元素的内联事件处理函数的特殊作用域在各浏览器中存在差异
2011/01/12 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
2013/06/09 Javascript
HTML5使用DeviceOrientation实现摇一摇功能
2015/06/05 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
2015/08/31 Javascript
javascript随机抽取0-100之间不重复的10个数
2016/02/25 Javascript
原生js制作日历控件实例分享
2016/04/06 Javascript
用js实现简单算法的实例代码
2016/09/24 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
2017/01/19 Javascript
vuex页面刷新后数据丢失的方法
2019/01/17 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
JavaScript基于面向对象实现的无缝滚动轮播示例
2020/01/17 Javascript
JS实现横向跑马灯效果代码
2020/04/20 Javascript
解决ant design vue中树形控件defaultExpandAll设置无效的问题
2020/10/26 Javascript
Python中每次处理一个字符的5种方法
2015/05/21 Python
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
Python制作爬虫采集小说
2015/10/25 Python
基于python3 类的属性、方法、封装、继承实例讲解
2017/09/19 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
2018/02/02 Python
Python高级用法总结
2018/05/26 Python
python中字符串数组逆序排列方法总结
2019/06/23 Python
python移位运算的实现
2019/07/15 Python
python 字典访问的三种方法小结
2019/12/05 Python
浅析pip安装第三方库及pycharm中导入第三方库的问题
2020/03/10 Python
全球领先的鞋类零售商:The Walking Company
2016/07/21 全球购物
英国医生在线预约:Top Doctors
2019/10/30 全球购物
有关打架的检讨书
2014/01/25 职场文书
市场营销策划方案
2014/06/11 职场文书
就业推荐表自我评价范文
2015/03/02 职场文书
检讨书格式
2015/05/07 职场文书
SQL Server #{}可以防止SQL注入
2022/05/11 SQL Server