php自定义截取中文字符串-utf8版
php自定义截取中文字符串-utf8版
UTF-8的编码范围(utf-8使用1-6个字节编码字符,实际上只使用了1-4字节):
1个字节:00——7F 2个字节:C080——DFBF 3个字符:E08080——EFBFBF 4个字符:F0808080——F7BFBFBF
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | $str = 'abcd我是中国人' ; echo strlen ( $str ), '<br/>' ; echo mstrlen( $str ), '<br/>' ; echo msubstr( $str , 3, 9); /** * 统计utf8下字符串长度 */ function mstrlen( $str ) { $len = 0; $i = 0; $slen = strlen ( $str ); while ( $i < $slen ) { $o = ord( $str [ $i ]); if ( $o < 127) { $i ++; } elseif ( $o < 224) { $i +=2; } else { $i +=3; } $len ++; } return $len ; } /** * 截取utf8编码下的字符串 */ function msubstr( $str , $start , $length ) { $len = mstrlen( $str ); if ( $start < 0) { $start += $len ; if ( $start < 0) { $start = 0; } } $slen = strlen ( $str ); $index = 0; for ( $i = 0; $i < $start && $i < $slen ; $i ++) { $o = ord( $str [ $index ]); if ( $o < 127) { $index ++; } elseif ( $o < 224) { $index +=2; } else { $index +=3; } } $length += $index ; $newStr = '' ; for ( $i = $index ; $i < $length && $i < $slen ; $i ++) { $o = ord( $str [ $i ]); if ( $o < 127) { $newStr .= $str [ $i ]; } elseif ( $o < 224) { $newStr .= substr ( $str , $i , 2); $i +=1; $length ++; } else { $newStr .= substr ( $str , $i , 3); $i +=2; $length +=2; } } return $newStr ; } |
模板哥 - 网页模板,网站模板,DIV模板,CSS模板,前端模板,官网,官网模板,企业网站模板下载,模板下载
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
· SQL Server统计信息更新会被阻塞或引起会话阻塞吗?
· 本地部署 DeepSeek:小白也能轻松搞定!
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 如何基于DeepSeek开展AI项目