PHP实现中文字符串截取无乱码

在我们学习PHP知识的过程中,PHP截取字符串应该是一个非常常见的字符串基础操作了,想必大家都比较熟悉这方面知识点。但是有些新手朋友们可能遇到过,当截取中英文字符串时出现乱码的情况,其实这个也是非常容易解决的。首先我们要了解关于中英文占多少字节的问题。ASCII码:一个中文汉字占两个字节的空间。UTF-8编码:一个中文(含繁体)等于三个字节。Unicode编码:一个中文(含繁体)等于两个字节。

下面我们就通过几个简单的代码示例为大家详细介绍关于PHP截取中英字符串且无乱码的相关知识。一、关于substr函数截取字符串<?phpecho substr("PHP中文网", 0, 5);substr:返回字符串的子串。substr()中第一个参数表示要截取的字符串,第二个参数表示从0位置开始截取,第三个参数表示截取长度。截取“PHP中文网”前5个字节,结果如下:
如图显示乱码,也就是说当我们使用substr函数进行中英文字符串截取时,会出现乱码。二、关于mb_substr函数截取字符串<?phpecho mb_substr("PHP中文网", 0, 5);mb_substr:获取部分字符串。截取“PHP中文网”前5个字符,结果如下:
如图截取了前五个字符,并且没有出现乱码。注:mb_substr是根据字符数来执行截取字符串。三、关于mb_strcut函数截取字符串<?phpecho mb_strcut("PHP中文网", 0, 7);截取“PHP中文网”前7个字节,结果如下:

从图中可以看到,我们要截取7个字节,但是只显示截取了“PHP中”这6个字节。由于一个汉字等于三个字节,那么这里第7个字节就不会显示了。

综上所述,如果大家遇到要截取中文字符串并无乱码的需求时,可以选择后两种方法(mb_substr()和mb_strcut())

 

转载于:https://www.cnblogs.com/sgm4231/p/9771496.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413154.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[css] 写一个高度从0到auto的transition动画

[css] 写一个高度从0到auto的transition动画 写不了吧&#xff0c;max-height 定值倒是可以个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

easyui启用行号错位解决方案

$("#dataGrid").datagrid({onLoadSuccess : function () {$(this).datagrid("fixRowHeight");} }); 加入上面的代码就可以解决&#xff01;

[Luogu] P1939 【模板】矩阵加速(数列)

题目描述 a[1]a[2]a[3]1 a[x]a[x-3]a[x-1] (x>3) 求a数列的第n项对1000000007&#xff08;10^97&#xff09;取余的值。 题目解析 顺序:x.x&#xff0c;y.y&#xff0c;x.y Code #include<iostream> #include<cstdio> #include<cstring> using namespace …

[css] 移动端页面不满一屏时如何实现满屏背景?

[css] 移动端页面不满一屏时如何实现满屏背景&#xff1f; body {min-height: 100vh; }个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

JavaScript获取完整当前域名

window.location.protocol"//"window.location.host

二叉树的下一个结点

题目描述 给定一个二叉树和其中的一个结点&#xff0c;请找出中序遍历顺序的下一个结点并且返回。注意&#xff0c;树中的结点不仅包含左右子结点&#xff0c;同时包含指向父结点的指针。树见书P275分三种情况&#xff1a;1. 该节点有右子树&#xff0c;下一个结点就是它右子树…

[css] css中class和id选择器有什么区别?

[css] css中class和id选择器有什么区别&#xff1f; id 在部分浏览器的 js 中会直接生成同名变量&#xff1b; id 的唯一性&#xff0c;获取该 id 的 dom 时&#xff0c;会取同名 id 的前者&#xff1b; id 层叠权重非常高&#xff0c;1000 个 class 也覆盖不了 id 的样式&…

jmeter中文版新手入门教程

1.先增加线程组2.线程组界面展示3.增加HTTP请求4.HHTP请求页面展示5.增加结果树6.结果树界面展示

命名法

驼峰命名法&#xff1a; 方法或者变量名的第一个单词的首字母小写&#xff0c;后面的每个单词首字母大写。如 schoolStudent 、showCenter()等。 帕斯卡命名法&#xff1a; 每一个单词的首字母都大写。如类名 School等。 在java中&#xff0c;定义类的属性和方法用驼峰命名法&…

[css] css中兼容ie浏览器的前缀是什么?

[css] css中兼容ie浏览器的前缀是什么 -webkit- 谷歌 -moz- 火狐 -o- opera -ms- ie个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

发一个自己写的抓包软件,支持插件化脚本分析

市场上的抓包工具已经足够多&#xff0c;轻量级的&#xff0c;重量级的都有&#xff0c;典型的wireshark&#xff0c;smartsniff等&#xff0c; 各有优缺点&#xff0c;PowerSniff是为程序员准备的一款抓包工具&#xff0c;目标是使协议解析插件编写更简单。文件格式完全兼容wi…

dropload.js无限刷新解决方案

1、检查Ajax是否设置了同步&#xff0c;将async设置为false&#xff0c;默认为true&#xff08;异步&#xff09; 2.检查是否进入了ajax的error方法&#xff0c;如果进入了error方法&#xff0c;按照官方给的demo&#xff0c;肯定会无限循环,所以在error方法加一句debugger进行…

[css] 请问触发hasLayout的后果是什么?

[css] 请问触发hasLayout的后果是什么&#xff1f; 继承父元素的布局。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

Java的HttpURLConnection通过POST请求中文乱码

创建工具HttpRequestUtil类&#xff1a; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.…

PHP.ini 中的session 相关设置

php.ini设置参考项&#xff1a;//处理session存取的模式session.save_handler files//session档案存放路径session.save_path /tmp//session使用cookie的功能,启动: 1session.use_cookies 1//session名字session.name PHPSESSID//自动启动;0:关&#xff1b;1&#xff1a;开…

Myeclipse2015把web项目添加至tomcat中,添加列表中却没有想要添加的项目

Myeclipse2015把web项目添加至tomcat中&#xff0c;添加列表中却没有想要添加的项目?? 解决方法&#xff1a; 项目-右键-Properties-Myeclipse-Project Factes - Dynamic Web Module 前面打√ 然后点击 Apply ,在点击OK就可以添加了&#xff01;

工作342:消除平时环境的console

let transformRemoveConsolePlugin [] /*if (process.env.NODE_ENV production) {transformRemoveConsolePlugin [transform-remove-console] }*/module.exports {presets: ["vue/cli-plugin-babel/preset"],plugins: [...transformRemoveConsolePlugin] };这样就…

maven项目发布到tomcat里lib包没有发布的问题

背景&#xff1a;使用maven搭建一套开发环境 出现的问题&#xff1a; 编译之后在tomcat中web工程下面的lib包没有将jar包打入。截图如下&#xff1a; 解决方法&#xff1a;右键项目&#xff0c;选择properties&#xff0c;然后选在使用eclipse做web项目时&#xff0c;为了方便…

poj-2528线段树练习

title: poj-2528线段树练习 date: 2018-10-13 13:45:09 tags: acm刷题 categories:ACM-线段树概述 这道题坑了我好久啊啊啊啊&#xff0c;&#xff0c;&#xff0c;&#xff0c; 到现在也只是理解了kaungbin的代码&#xff0c;&#xff0c;&#xff0c;知道每一步做什么&#x…