浅析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实现链结人气统计
Oct 09 PHP
生成sessionid和随机密码的例子
Oct 09 PHP
phpmyadmin 3.4 空密码登录的实现方法
May 29 PHP
PHP编码转换函数 自动转换字符集支持数组转换
Dec 16 PHP
PHP之短标签开启设置
Jun 17 PHP
PHP生成指定长度随机数最简洁的方法
Jul 14 PHP
php表单提交与$_POST实例分析
Jan 26 PHP
PHP设计模式之装饰者模式代码实例
May 11 PHP
php中文验证码实现方法
Jun 18 PHP
Laravel模型间关系设置分表的方法示例
Apr 21 PHP
解决laravel查询构造器中的别名问题
Oct 17 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
Oct 21 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的MySQL连接类
2013/06/07 PHP
一个图片地址分解程序(用于PHP小偷程序)
2014/08/23 PHP
Javascript attachEvent传递参数的办法
2009/12/14 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
javascript的replace方法结合正则使用实例总结
2016/06/16 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
js对字符串进行编码的方法总结(推荐)
2016/11/10 Javascript
JS实现页面跳转参数不丢失的方法
2016/11/28 Javascript
Bootstrap实现导航栏的2种方式
2016/11/28 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
在vue中使用express-mock搭建mock服务的方法
2018/11/07 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
NodeJs 模仿SIP话机注册的方法
2019/06/21 NodeJs
微信小程序实现写入读取缓存详解
2019/08/30 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
2019/12/04 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
Vue实现返回顶部按钮实例代码
2020/10/21 Javascript
python下10个简单实例代码
2017/11/15 Python
Python中文件的读取和写入操作
2018/04/27 Python
python求质数的3种方法
2018/09/28 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
2019/03/27 Python
python实现微信防撤回神器
2019/04/29 Python
pyqt5 获取显示器的分辨率的方法
2019/06/18 Python
python将excel转换为csv的代码方法总结
2019/07/03 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
2019/10/17 Python
python flask中动态URL规则详解
2019/11/22 Python
python中openpyxl和xlsxwriter对Excel的操作方法
2021/03/01 Python
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
德国在线订购鲜花:Fleurop
2018/08/25 全球购物
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
2016/04/15 面试题
自荐信怎么写呢?
2013/12/09 职场文书
小学生思想品德评语
2014/12/31 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书
MySQL中int (10) 和 int (11) 的区别
2022/01/22 MySQL