php字符串截取函数mb_substr用法实例分析


Posted in PHP onJune 25, 2019

本文实例讲述了php字符串截取函数mb_substr用法。分享给大家供大家参考,具体如下:

string mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] )-截取字符串

(PHP 4 >= 4.0.6, PHP 5)

$str 要获取字符串的目标字符串(字符串起始位置为0)
$start,$str中要使用的第一个字符的位置
$length,获取的子字符串的长度(注意不是结束位置)
$encoding,可指定字符编码(一般用于处理中文字符时使用,同时这个问题碰到的非常多)

示例:

<?php
mb_internal_encoding ("UTF-8");  //如果把UTF-8改为编码,下面针对于中文字符串处理的值会改变。
echo mb_internal_encoding()."";  //获取字符编码为ISO-8859-1
echo mb_substr('abcdefghijk',0,9)."";  //abcdefghi
echo mb_substr('abcdefghijk',1,5)."";  //bcdef
echo mb_substr('我们都是中国人',0,9)."";  //我们都是中国人
echo mb_substr('我们都是中国人',0,9,'gb2312')."";  //我们都是中
echo mb_substr('我们都是中国人',0,9,'utf-8');  //我们都是中国人
?>

总结:

1、在处理英文字符串的时候,该函数的第四个参数($encoding)可以忽略。
2、在处理中文字符串的时候,就要小心了,一定要考虑编码问题,编码不同,中文的值也不同。
3、在中文字符串导入数据库时,就显得更为重要了。
4、处理字符串或文本的编码能力,是衡量程序员功力的一项标准。

补充:substr和mb_substr的区别

异同点:

两个函数都是截取字符串的长度,不同的是mb_substr可以针对多字节编码的汉字进行截取,从而防止乱码的出现

实例说明:

示例1:

<?php
$chuan="我是中国人!";
echo substr($chuan,0,3);
echo '<br />';
echo mb_substr($chuan,0,3,'utf8');
?>

运行结果:


我是中

在utf8编码下,由于一个汉字占3个字节,所以第一个输出的是: 我
第二个输出的是: 我是中

示例2:

<?php
$chuan="我是中国人!";
echo substr($chuan,0,-4);
echo '<br />';
echo mb_substr($chuan,0,-2,'utf8');
?>

运行结果:

我是中国
我是中国

两个输出的都是: 我是中国
第一个长度为负4,就会省略掉!和人,从零开始,就会包括我是中国
第二个同理

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP Ajax实现页面无刷新发表评论
Jan 02 PHP
dedecms防止FCK乱格式化你的代码的修改方法
Mar 17 PHP
php下用GD生成生成缩略图的两个选择和区别
Apr 17 PHP
PHP下10件你也许并不了解的事情
Sep 11 PHP
php根据指定位置和长度获得子字符串的方法
Mar 17 PHP
php使用Jpgraph绘制3D饼状图的方法
Jun 10 PHP
php采用session实现防止页面重复刷新
Dec 24 PHP
thinkPHP批量删除的实现方法分析
Nov 09 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
Apr 07 PHP
Laravel 解决composer相关操作提示php相关异常的问题
Oct 23 PHP
Laravel框架控制器,视图及模型操作图文详解
Dec 04 PHP
Laravel5.1 框架控制器基础用法实例分析
Jan 04 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
Jun 25 #PHP
Laravel向公共模板赋值方法总结
Jun 25 #PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
Jun 25 #PHP
PHP中遍历数组的三种常用方法实例分析
Jun 24 #PHP
php字符串过滤strip_tags()函数用法实例分析
Jun 24 #PHP
提高Laravel应用性能方法详解
Jun 24 #PHP
PHP二维索引数组的遍历实例分析【2种方式】
Jun 24 #PHP
You might like
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
2011/08/08 PHP
解析左右值无限分类的实现算法
2013/06/20 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
php简单分页类实现方法
2015/02/26 PHP
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
PHP实现文件上传功能实例代码
2017/05/18 PHP
php输出反斜杠的实例方法
2019/09/19 PHP
javascript之bind使用介绍
2011/10/09 Javascript
用JavaScript实现动画效果的方法
2013/07/20 Javascript
js中定义一个变量并判断其是否为空的方法
2014/05/13 Javascript
ExpressJS入门实例
2015/01/14 Javascript
聊聊Vue.js的template编译的问题
2017/10/09 Javascript
vue自定义一个v-model的实现代码
2018/06/21 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
详解小程序开发经验:多页面数据同步
2019/05/18 Javascript
node.js实现带进度条的多文件上传
2020/03/27 Javascript
基python实现多线程网页爬虫
2015/09/06 Python
详解Golang 与python中的字符串反转
2017/07/21 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
2017/10/29 Python
Python自定义装饰器原理与用法实例分析
2018/07/16 Python
Python使用一行代码获取上个月是几月
2018/08/30 Python
python修改txt文件中的某一项方法
2018/12/29 Python
python绘制多个子图的实例
2019/07/07 Python
django如何自己创建一个中间件
2019/07/24 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
用 Django 开发一个 Python Web API的方法步骤
2020/12/03 Python
HTML5 在canvas中绘制矩形附效果图
2014/06/23 HTML / CSS
环境科学专业个人求职信
2013/09/26 职场文书
生物化学研究助理员求职信
2013/10/09 职场文书
《自选商场》教学反思
2014/02/14 职场文书
优质护理服务演讲稿
2014/05/07 职场文书
家装业务员岗位职责
2015/04/03 职场文书
2015年超市员工工作总结
2015/05/04 职场文书
2015年思想品德教学工作总结
2015/07/22 职场文书
解决Navicat for MySQL 连接 MySQL 报2005错误的问题
2021/05/29 MySQL
Redis RDB技术底层原理详解
2021/09/04 Redis