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 相关文章推荐
解析csv数据导入mysql的方法
Jul 01 PHP
微信扫描二维码登录网站代码示例
Dec 30 PHP
[原创]php获取数组中键值最大数组项的索引值
Mar 17 PHP
php验证码实现代码(3种)
Sep 07 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
Mar 18 PHP
php实现图片以base64显示的方法
Oct 13 PHP
PHP编写daemon process 实例详解
Nov 13 PHP
使用php实现网站验证码功能【推荐】
Feb 09 PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 PHP
PHP7新功能总结
Apr 14 PHP
Laravel框架Eloquent ORM修改数据操作示例
Dec 03 PHP
PHP执行系统命令函数实例讲解
Mar 03 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
重置版宣传动画
2020/04/09 魔兽争霸
?算你??的 PHP 程式大小
2006/12/06 PHP
解析php中var_dump,var_export,print_r三个函数的区别
2013/06/21 PHP
PHP高级编程实例:编写守护进程
2014/09/02 PHP
CodeIgniter读写分离实现方法详解
2016/01/20 PHP
PHP中的随机性 你觉得自己幸运吗?
2016/01/22 PHP
JavaScript面向对象编程
2008/03/02 Javascript
javascript 一些用法小结
2009/09/11 Javascript
javascript 弹出的窗口返回值给父窗口具体实现
2013/11/23 Javascript
Egret引擎开发指南之编译项目
2014/09/03 Javascript
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
jquery实现侧边栏左右伸缩效果的示例
2017/12/19 jQuery
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
2019/01/19 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
2019/04/22 Javascript
vue-cli+axios实现文件上传下载功能(下载接收后台返回文件流)
2019/05/10 Javascript
element日历calendar组件上月、今天、下月、日历块点击事件及模板源码
2020/07/27 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
2020/07/29 Javascript
uin-app+mockjs实现本地数据模拟
2020/08/26 Javascript
[40:16]TFT vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python基础教程之udp端口扫描
2014/02/10 Python
Python八大常见排序算法定义、实现及时间消耗效率分析
2018/04/27 Python
python tornado微信开发入门代码
2018/08/24 Python
python之pyqt5通过按钮改变Label的背景颜色方法
2019/06/13 Python
python基于三阶贝塞尔曲线的数据平滑算法
2019/12/27 Python
Python内置函数property()如何使用
2020/09/01 Python
美国大城市最热门旅游景点门票:CityPASS
2016/12/16 全球购物
汉森批发:Hansen Wholesale
2018/05/24 全球购物
屈臣氏菲律宾官网:Watsons菲律宾
2020/06/30 全球购物
如何整合JQuery和Prototype
2014/01/31 面试题
集团公司总经理岗位职责
2013/12/20 职场文书
nginx location中多个if里面proxy_pass的方法
2021/03/31 Servers
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
Python绘制地图神器folium的新人入门指南
2021/05/23 Python
你知道哪几种MYSQL的连接查询
2021/06/03 MySQL
Python实现简单的俄罗斯方块游戏
2021/09/25 Python
《异世界四重奏》剧场版6月10日上映 PV视觉图原创角色发表
2022/03/20 日漫