php完美截取中文字符函数mb_substr
php内置的substr无法解决截取中文字符串的乱码问题,在php.ini打开extension=php_mbstring.dll支持的情况下,可以使用mb_substr完美解决中文截取
要使用到的函数:mb_substr和mb_strlen。
mb_substr使用方法:mb_substr("我是要被截取的中文字符串",开始位置, 要截取的长度, 字符串的编码);实例:mb_substr("我是要被截取的中文字符串",0, 3, 'gbk');结果将是“我是要”;这个函数可以解决字符串中包含中文、英文、数字、字符各种类型的字符串。
在实际使用过程中需要和mb_strlen配合使用,mb_strlen的使用方法和strlen类似,只是多了一个编码参数:mb_strlen("我是要被计算长度的字符", "gbk");结果是11。
详细的使用例子:
比如字符串超过20个就需要截取:
if(mb_strlen($str, "gbk") >20)
{
$str = mb_substr($str, 0, 20, "gbk");
}
经常面试的时候问你如何实现字符串翻转,第一反应,当然是strrev函数啦,这么容易的题目还放在面试里考,真不嫌麻烦啊?
strrev函数对英文很好用,直接可以实现字符串翻转,但是面对中文呢?肯定都是乱码,对于这样的问题有很多,比如strstr,substr等函数都是这样的。还好PHP提供了mb_类的函数实现不同编码、不同语言之间的相互转换等操作。下面是我写的PHP字符串翻转函数(mb_类的函数需要开启一个mb_string实现)。
<?PHP function getRev($str,$encoding='utf-8'){ $result = ''; $len = mb_strlen($str); for($i=$len-1; $i>=0; $i--){ $result .= mb_substr($str,$i,1,$encoding); } return $result; } $str="我爱博客园" echo getRev($str); ?> //输出结果园客博爱我
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构