[不花钱站长]:从免费域名开始[0元] Oracle永久免费VPS[0元] VPS环境搭建免费脚本[0元] 秒变大盘挂载免费网盘[0元] 小白免费采集器1天500W[0元] CF免费DNS+CDN服务[0元]
[零基础网赚]:撸本站免费源码[0元] 网站强引免费蜘蛛法[0元] 图片视频文件免费存储[0元] 外链轻松发布免费友链[0元] 入坑免费教程学习源代码[0元] 网上百种+赚钱联盟推荐[?元]

↑↑VPS推荐网 WWW.VPS.COM.IN 稳定 便宜 免备案↑↑


您现在的位置是:首页 > 全球[VPS测评] >  永久免费VPS 香港VPS,国外永久免费VPS

php substr 中文截取乱码解决办法

全球[VPS测评]来源:VPS推荐网点击:768
【性价之王】【线路之王】【价格之王】【配置之王】
【免费之王】【香港首推】【梯子之王】【独服之王】
php substr 中文截取乱码解决办法

在 php 中使用 substr 函数进行中文字符串截取时,有可能会产生乱码,因为中文的两种常用编码格式中:UTF-8 编码,每个汉字占 3 字节,而 GB2312 编码中,每个汉字占 2 字节,英文占 1 字节,这就导致很多时候 substr()硬生生地将一个中文字符“锯”成两半,造成断开的字符会把其后的..拉过来一起做一个字,所以出现了 php substr 中文乱码。

解决方法一:使用 mb_substr 函数。

mb_substr (PHP 4 >= 4.0.6, PHP 5, PHP 7) — 获取部分字符串

string mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] )

根据字符数执行一个多字节安全的 substr() 操作。 位置是从 str 的开始位置进行计数。 第一个字符的位置是 0。第二个字符的位置是 1,以此类推。

解决方法二:编写自定义函数。

function sub_str($str, $length = , $append = true) {   $str = trim($str);   $strlength = strlen($str);   if ($length == || $length >= $strlength)   {     return $str; //截取长度等于或大于等于本字符串的长度,返回字符串本身   }   elseif ($length < ) //如果截取长度为负数   {     $length = $strlength + $length;//那么截取长度就等于字符串长度减去截取长度     if ($length < )     {       $length = $strlength;//如果截取长度的绝对值大于字符串本身长度,则截取长度取字符串本身的长度     }   }   if (function_exists('mb_substr'))   {     $newstr = mb_substr($str, , $length, EC_CHARSET);   }   elseif (function_exists('iconv_substr'))   {     $newstr = iconv_substr($str, , $length, EC_CHARSET);   }   else   {     //$newstr = trim_right(substr($str, , $length));     $newstr = substr($str, , $length);   }   if ($append && $str != $newstr)   {     $newstr .= '...';   }   return $newstr; }

猜你可能想看的VPS


转载请注明原文地址:http://140.238.13.167:12355/read-202648.html

下一篇       上一篇