浅析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 相关文章推荐
关于Appserv无法打开localhost问题的解决方法
Oct 16 PHP
用PHP书写安全的脚本代码
Feb 05 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
Jun 26 PHP
PHP中防止SQL注入方法详解
Dec 25 PHP
一个非常完美的读写ini格式的PHP配置类分享
Feb 12 PHP
javascript+php实现根据用户时区显示当地时间的方法
Mar 11 PHP
php字符串分割函数用法实例
Mar 17 PHP
PHP输出九九乘法表代码实例
Mar 27 PHP
Zend Framework开发入门经典教程
Mar 23 PHP
php微信开发自定义菜单
Aug 27 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
Jun 04 PHP
解决laravel 表单提交-POST 异常的问题
Oct 15 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
那些年我们错过的魔术方法(Magic Methods)
2014/01/14 PHP
WordPress的主题编写中获取头部模板和底部模板
2015/12/28 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
PDO::inTransaction讲解
2019/01/28 PHP
jquery自定义滚动条插件示例分享
2014/02/21 Javascript
浅谈JavaScript函数节流
2014/12/09 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
2016/05/03 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
2016/09/20 Javascript
Zabbix添加Node.js监控的方法
2016/10/20 Javascript
jQuery实现级联下拉框实战(5)
2017/02/08 Javascript
JavaScript html5 canvas实现图片上画超链接
2017/10/20 Javascript
vue实现图片滚动的示例代码(类似走马灯效果)
2018/03/03 Javascript
Vue高版本中一些新特性的使用详解
2018/09/25 Javascript
JS计算两个数组的交集、差集、并集、补集(多种实现方式)
2019/05/21 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
2019/07/10 jQuery
python删除列表中重复记录的方法
2015/04/28 Python
利用python求解物理学中的双弹簧质能系统详解
2017/09/29 Python
Python爬虫PyQuery库基本用法入门教程
2018/08/04 Python
Python通用函数实现数组计算的方法
2019/06/13 Python
python 处理微信对账单数据的实例代码
2019/07/19 Python
Python List列表对象内置方法实例详解
2019/10/22 Python
python梯度下降算法的实现
2020/02/24 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
Python爬取某平台短视频的方法
2021/02/08 Python
解决H5的a标签的download属性下载service上的文件出现跨域问题
2019/07/16 HTML / CSS
使用phonegap创建联系人的实现方法
2017/03/30 HTML / CSS
百度软件工程师职位
2013/02/14 面试题
家长会学生演讲稿
2014/04/26 职场文书
信用社主任竞聘演讲稿
2014/05/23 职场文书
学党史心得体会
2014/09/05 职场文书
授权委托书(完整版)
2014/09/10 职场文书
2014年世界艾滋病日宣传活动总结
2014/11/18 职场文书
2016年读书月活动总结范文
2016/04/06 职场文书
游戏《铁拳》动画化!2022年年内播出
2022/03/21 日漫
「回转企鹅罐」10周年纪念展「輪るピングドラム展」海报公开
2022/03/22 日漫