php截取字符串substr和mb_substr的区别

标签: php  php函数  substr  mb_substr

php截取字符串,可以用substr,mb_substr,mb_struct三个函数,我一般用substr和mb_substr,也没有仔细研究过他们的区别,

觉得随便用一个就好了,先看代码:

        $str1 = substr("abcdef", 1);    // 返回 "bcdef"
        $str2 = substr("abcdef", 2);    // 返回 "cdef"
        $str3 = substr("abcdef", 0,1);    // 返回 "a"
        $str4 = substr("abcdef", 0,2);    // 返回 "ab"

        $str5 = substr("abcdef", -1); // 返回 "f"
        $str6 = substr("abcdef", -2); // 返回 "ef"
        $str7 = substr("abcdef", 0,-1); // 返回 "abcde"
        $str8 = substr("abcdef", 0,-2); // 返回 "abcd"

        $str9 = substr('你好你好你好',1);//返回:��好你好你好
        $str10 = mb_substr('你好你好你好',1);//返回:好你好你好

用substr和mb_substr打印前面八个,结果一样的,但是打印第九和第十个的时候,也就是截取中文的时候,区别出来了,substr返回的结果有乱码,而mb_substr截取的正常,看一下乱码的字符,有两个类似问号的东东,猜一下:UTF-8编码,一个汉字占3个字节,第一个汉字是“你”,把它分为3个字节,然后被截掉了一个,还剩两个(类似两个问号的东东),和后面的“好你好你好”,就打印出了“��好你好你好”,可以在汉字前面加一个字母或者英文标点符号试一下,就可以完全把第一位截掉。
声明:这是猜测,不是什么结论,也不要被带偏了。因为我在网上搜出来的结果是:mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符。

能动手的就不要猜,自己打印出来印证一下,先解决要截取字符串的问题,然后再慢慢研究用哪个好,有什么区别。

php函数方法列表:http://php.net/manual/zh/function.substr.phphttp://php.net/manual/zh/function.mb-substr.php

版权声明:本文为wengedexiaozao原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wengedexiaozao/article/details/82686781

智能推荐

VUE给动态生成的el-checkbox添加v-model

需求描述:根据返回的数据,页面动态for循环添加el-checkbox,动态绑定v-model; html代码: tabList数据格式: 之前的错误做法: 开始以为这样就可以了,毕竟在el-checkbox上用item.status绑定v-model,后面发现checkbox点击的时候并没有更新; 解决方案: 官方文档...

[UE4]蓝图和C++调用自定义函数

1、C++自定义方法,蓝图调用 UFUNCTION宏是处理将C++函数暴露给反射系统的一些事情,参数BlueprintCallable意味着这个函数可以在蓝图中调用,而后面的目录是必须有的,这样在蓝图中右键点击的时候,我们就可以根据这个目录找到我们需要的函数。 2、蓝图定义方法,C++调用 当我们在蓝图中定义了一系列操作后,我们也想用C++调用,我们利用BlueprintImplementable...

Redis--2.Jedis的介绍和使用

一.概念 Jedis是Redis官方推荐使用的的一个Java连接开发的工具(中间件)。 Jedis主要是集成了redis的一些命令操作,封装了redis的java客户端。 使用Jedis操作Redis数据库,就相当于使用JDBC操作sql_server、Mysql数据库。 二.两种连接方式 1.Jedis对象直连Redis Jedis对象直连方式可以分为五个步骤: 1、导入Jedis的jar包 2...

选择图片上传之后,图片旋转问题解决方案(前端)

图片上传之后,显示为什么会是旋转的呢? 这就要说到图片的 exif 简单来说,Exif 信息就是由数码相机在拍摄过程中采集一系列的信息,然后把信息放置在我们熟知的 JPEG/TIFF 文件的头部,也就是说 Exif信息是镶嵌在 JPEG/TIFF 图像文件格式内的一组拍摄参数,它就好像是相机的日期打印功能一样,只不过 Exif信息所记录的资讯更为详尽和完备。Exif 所记录的元数据信息非常丰富,主...

ApplicationContextAware如何装配applicationcontext

首先看通过实现ApplicationContextAware接口获得applicationcontext的方法: 要知道ApplicationContextAware首先要了解ApplicationContextAwareProcessor ApplicationContextAwareProcessor继承了BeanPostProcessor,即在bean实例化的时候会调用postProcess...

猜你喜欢

[BZOJ1013][JSOI2008]球形空间产生器sphere(高斯消元)

题目: 我是超链接 题解: 根据题目给出的信息,我们列柿子 (a1−x)2+(b1−y)2=r2(a1−x)2+(b1−y)2=r2 (a2−x)2+(b2−y)2=r2(a2−x)2+(b2−y)2=r2 (a3−x)2+(b3−y)2=r2(a3−x)2+(b3&...

【opencv学习之三十六】轮廓特征应用:计算点与轮廓距离

opencv实现了Contours与point的距离关系的计算使用起来很方便,不用自己再进行坐标转换计算了;示例代码如下: 效果如下:...

实验六:MPG音频编码

一、实验原理 音频压缩编码的本质是感知编码,利用感知模型去除不敏感的声音数据,同时保证声音质量不会有明显下降。它采用子带编码技术,根据心理声学模型获得不同子带的听觉掩蔽阈值,并对每个子带的取样值进行动态量化。 1、音频压缩的可能性 (1)声音信号中的“冗余”信息: 频域:非均匀功率密度谱, 低频能量高,高频能量低。 时域:信息冗余度主要表现在幅度非均匀分布,即不同幅度的样值...

隐式 Style–CSS 在反爬虫中的应用

文章作者:「夜幕团队 NightTeam」 - 戴煌金 润色、校对:「夜幕团队 NightTeam」 - Loco 什么是隐式 Style–CSS 先来唠唠什么是 隐式 Style–CSS: CSS中,::before 创建一个伪元素,其将成为匹配选中的元素的第一个子元素。常通过 content 属性来为一个元素添加修饰性的内容。 引用自:https://developer...

Cosmos(ZYNQ)编译运行Linux系统

Author:Gary Data:2019-12-24 Ref: ug1144-petalinux-tools-reference-guide.pdf https://www.cnblogs.com/vacajk/p/6146146.html https://www.cnblogs.com/likaiwei/p/10223354.html https://blog.csdn.net/mcupro/...