浅析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
php 无限极分类
Mar 27 PHP
php minixml详解
Jul 19 PHP
PHP几个数学计算的内部函数学习整理
Aug 06 PHP
php5.5新数组函数array_column使用
Jul 08 PHP
浅析PHP程序设计中的MVC编程思想
Jul 28 PHP
PHP循环遍历数组的3种方法list()、each()和while总结
Nov 19 PHP
使用PHP实现生成HTML静态页面
Nov 18 PHP
PHP常见错误提示含义解释(实用!值得收藏)
Apr 25 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
Feb 04 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
Apr 10 PHP
php和nginx交互实例讲解
Sep 24 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
模拟flock实现文件锁定
2007/02/14 PHP
apache+php+mysql安装配置方法小结
2010/08/01 PHP
实例讲解PHP设计模式编程中的简单工厂模式
2016/02/29 PHP
php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
2016/07/18 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
解决iframe的frameborder在chrome/ff/ie下的差异
2010/08/12 Javascript
基于Jquery的简单图片切换效果
2011/01/06 Javascript
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
2015/01/22 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
2015/03/04 Javascript
JQuery操作元素的css样式
2015/03/09 Javascript
JS实现双击屏幕滚动效果代码
2015/10/28 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
AngularJS使用ng-repeat指令实现下拉框
2016/08/23 Javascript
图片加载完成再执行事件的实例
2017/11/16 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
详解Vue基于 Nuxt.js 实现服务端渲染(SSR)
2018/04/05 Javascript
vue实现新闻展示页的步骤详解
2019/04/11 Javascript
js如何验证密码强度
2020/03/18 Javascript
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
2020/09/10 Javascript
[02:43]DOTA2英雄基础教程 德鲁伊
2014/01/13 DOTA
Pyramid添加Middleware的方法实例
2013/11/27 Python
python采用django框架实现支付宝即时到帐接口
2016/05/17 Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
2016/07/04 Python
用Python下载一个网页保存为本地的HTML文件实例
2018/05/21 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
2018/05/24 Python
python获取时间及时间格式转换问题实例代码详解
2018/12/06 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
2019/09/03 Python
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
How to spawning asynchronous work in J2EE
2016/08/29 面试题
电气技术员岗位职责
2013/11/19 职场文书
项目管理计划书
2014/01/09 职场文书
旅游个人求职信范文
2014/01/30 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
2015年电话销售工作总结范文
2015/04/20 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书