浅析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 在线打包_支持子目录
Jun 28 PHP
浅析php中如何在有限的内存中读取大文件
Jul 02 PHP
Linux下手动编译安装PHP扩展的例子分享
Jul 15 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
Nov 12 PHP
Yii实现MySQL多数据库和读写分离实例分析
Dec 03 PHP
Laravel实现用户注册和登录
Jan 23 PHP
PHP经典面试题集锦
Mar 19 PHP
Laravel 5 框架入门(三)
Apr 09 PHP
详细解读PHP中接口的应用
Aug 12 PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
Jul 18 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
Oct 09 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导出Word文档的原理和实例
2013/10/21 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
WordPress中使主题支持小工具以及添加插件启用函数
2015/12/22 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
js里怎么取select标签里的值并修改
2012/12/10 Javascript
JavaScript中Window对象的属性及事件
2015/12/25 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
2017/04/27 Javascript
JS自动生成动态HTML验证码页面
2017/06/14 Javascript
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
vue实现页面加载动画效果
2017/09/19 Javascript
Auto.js自动收取自己和好友蚂蚁森林能量脚本
2018/06/28 Javascript
如何把vuejs打包出来的文件整合到springboot里
2018/07/26 Javascript
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
2017/09/06 Python
微信跳一跳python代码实现
2018/01/05 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
Python简单I/O操作示例
2019/03/18 Python
python字典嵌套字典的情况下找到某个key的value详解
2019/07/10 Python
使用python切片实现二维数组复制示例
2019/11/26 Python
python scatter函数用法实例详解
2020/02/11 Python
python实现贪吃蛇游戏源码
2020/03/21 Python
python中xlutils库用法浅析
2020/12/29 Python
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
2014/10/11 HTML / CSS
挪威户外活动服装和装备购物网站:Bergfreunde挪威
2016/10/20 全球购物
澳大利亚家具和家居用品在线:BROSA
2017/11/02 全球购物
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
维也纳通行证:Vienna PASS
2019/07/18 全球购物
MaBelle玛贝尔香港官网:香港钻饰连锁店
2019/09/09 全球购物
我能否用void** 指针作为参数, 使函数按引用接受一般指针
2013/02/16 面试题
学校班班通实施方案
2014/06/11 职场文书
副校长竞聘演讲稿
2014/09/01 职场文书
私人委托书格式
2014/09/10 职场文书
2014年护士工作总结范文
2014/11/11 职场文书
2015年银行工作总结范文
2015/04/01 职场文书
python自然语言处理之字典树知识总结
2021/04/25 Python