浅析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 快速生成 Flash 动画的方法
Mar 06 PHP
DedeCMS 核心类TypeLink.class.php摘要笔记
Apr 07 PHP
xml在joomla表单中的应用详解分享
Jul 19 PHP
适用于抽奖程序、随机广告的PHP概率算法实例
Apr 09 PHP
linux使用crontab实现PHP执行计划定时任务
May 10 PHP
Eclipse的PHP插件PHPEclipse安装和使用
Jul 20 PHP
codeigniter中view通过循环显示数组数据的方法
Mar 20 PHP
php 生成Tab键或逗号分隔的CSV
Sep 24 PHP
PHP多种序列化/反序列化的方法详解
Jun 23 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
php7 图形用户界面GUI 开发示例
Feb 22 PHP
php多进程并发编程防止出现僵尸进程的方法分析
Feb 28 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 error_log 函数的使用
2009/04/13 PHP
php的SimpleXML方法读写XML接口文件实例解析
2014/06/16 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
2016/03/01 PHP
PHP 极验验证码实例讲解
2016/09/29 PHP
浅谈php调用python文件
2019/03/29 PHP
jquery中ajax学习笔记一
2011/10/16 Javascript
nodejs教程 安装express及配置app.js文件的详细步骤
2013/05/11 NodeJs
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
2014/04/12 Javascript
深入理解事件冒泡(Bubble)和事件捕捉(capture)
2016/05/28 Javascript
VUE实现一个分页组件的示例
2017/09/13 Javascript
浅析node应用的timing-attack安全漏洞
2018/02/28 Javascript
NodeJS有难度的面试题(能答对几个)
2019/10/09 NodeJs
node静态服务器实现静态读取文件或文件夹
2019/12/03 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
2020/04/17 Javascript
[48:48]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python迭代器和生成器介绍
2015/03/06 Python
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
解决pycharm无法调用pip安装的包问题
2018/05/18 Python
python 同时读取多个文件的例子
2019/07/16 Python
利用Python脚本实现自动刷网课
2020/02/03 Python
pyspark 随机森林的实现
2020/04/24 Python
Python中实现输入一个整数的案例
2020/05/03 Python
keras实现调用自己训练的模型,并去掉全连接层
2020/06/09 Python
python实现数字炸弹游戏程序
2020/07/17 Python
Python实现JS解密并爬取某音漫客网站
2020/10/23 Python
Python命令行参数argv和argparse该如何使用
2021/02/08 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
浅析几个CSS3常用功能的写法
2014/06/05 HTML / CSS
新闻系毕业生推荐信
2013/11/16 职场文书
营销总经理的岗位职责
2013/12/15 职场文书
初中地理教学反思
2014/01/11 职场文书
2014年纪委工作总结
2014/12/05 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
离婚协议书范本
2015/01/26 职场文书
财务人员个人工作总结
2015/02/27 职场文书
mysql sock文件存储了什么信息
2022/07/15 MySQL