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 UTF-8、Unicode和BOM问题
May 18 PHP
PHP number_format() 函数定义和用法
Jun 01 PHP
PHP利用str_replace防注入的方法
Nov 10 PHP
PHP SPL使用方法和他的威力
Nov 12 PHP
destoon实现不同会员组公司名称显示不同的颜色的方法
Aug 22 PHP
自定义session存储机制避免会话保持问题
Oct 08 PHP
网站防止被刷票的一些思路与方法
Jan 08 PHP
PHP中的命名空间相关概念浅析
Jan 22 PHP
golang与php实现计算两个经纬度之间距离的方法
Jul 22 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 PHP
PHP多个图片压缩成ZIP的方法
Aug 18 PHP
Laravel 6.2 中添加了可调用容器对象的方法
Oct 22 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
php 数组使用详解 推荐
2011/06/02 PHP
destoon文章模块调用企业会员资料的方法
2014/08/22 PHP
jquery中:input和input的区别分析
2011/07/13 Javascript
javascript中日期转换成时间戳的小例子
2013/03/21 Javascript
自己实现ajax封装示例分享
2014/04/01 Javascript
QQ空间顶部折页撕开效果示例代码
2014/06/15 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
JS实现的打字机效果完整实例
2016/06/20 Javascript
AngularJS使用ng-options指令实现下拉框
2016/08/23 Javascript
ES6 中可以提升幸福度的小功能
2018/08/06 Javascript
小程序分享模块超级详解(推荐)
2019/04/10 Javascript
微信小程序事件流原理解析
2019/11/27 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
swiper实现导航滚动效果
2020/12/13 Javascript
Python标准库之多进程(multiprocessing包)介绍
2014/11/25 Python
Python中Iterator迭代器的使用杂谈
2016/06/20 Python
python 容器总结整理
2017/04/04 Python
python flask实现分页效果
2017/06/27 Python
解决Django no such table: django_session的问题
2020/04/07 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
2020/05/27 Python
css3实现画半圆弧线的示例代码
2017/11/06 HTML / CSS
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
英国景点门票网站:attractiontix
2019/08/27 全球购物
屈臣氏俄罗斯在线商店:Watsons俄罗斯
2020/08/03 全球购物
留学自荐信的技巧
2013/10/17 职场文书
会计找工作求职信范文
2013/12/09 职场文书
党员检讨书
2014/10/13 职场文书
大学生求职简历自我评价
2015/03/02 职场文书
老公写给老婆的检讨书
2015/05/06 职场文书
上甘岭观后感
2015/06/10 职场文书
CSS 还能这样玩?奇思妙想渐变的艺术
2021/04/27 HTML / CSS
Redis主从配置和底层实现原理解析(实战记录)
2021/06/30 Redis
Mysql binlog日志文件过大的解决
2021/10/05 MySQL
Django+Nginx+uWSGI 定时任务的实现方法
2022/01/22 Python
springboot读取nacos配置文件
2022/05/20 Java/Android