• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php中文字符串截取乱码问题解决

php 搞代码 4年前 (2022-01-23) 15次浏览 已收录 0个评论

其实下面的方法1、2现在不推荐了,读者们看了就当多了解了吧,网友有留言,其实php有现成的用于多字节安全的字符串截取函数的mb_substr,

参照:http://www.php.net/manual/zh/function.mb-substr.php

http://baike.baidu.com/view/4517800.htm

方法1、字符串编码为UTF-8的,一个中文字符占三个字节:

    public static function chinesesubstr($str, $start, $len) { // $str指字符串,$start指字符串的起始位置,$len指字符串长度        $strlen = $start + $len; // 用$strlen存储字符串的总长度,即从字符串的起始位置到字符串的总长度        for($i = $start; $i  0xa0) { // 如果字符串中首个字节的ASCII序数值大于0xa0,则表示汉字                $tmpstr .= substr ( $str, $i, 3 ); // 每次取出三位字符赋给变量$tmpstr,即等于一个汉字                $i=$i+3; // 变量自加3            } else{                $tmpstr .= substr ( $str, $i, 1 ); // 如果不是汉字,则每次取出一位字符赋给变量$tmpstr          <strong style="color:transparent">本文来源gaodai#ma#com搞@@代~&码*网/</strong><strong>搞gaodaima代码</strong>      $i++;            }        }        return $tmpstr; // 返回字符串    }

方法2、字符串编码为GB2312的,一个中文字符占两个字节:

    public static function chinesesubstr($str, $start, $len) { // $str指字符串,$start指字符串的起始位置,$len指字符串长度        $strlen = $start + $len; // 用$strlen存储字符串的总长度,即从字符串的起始位置到字符串的总长度        for($i = $start; $i  0xa0) { // 如果字符串中首个字节的ASCII序数值大于0xa0,则表示汉字                $tmpstr .= substr ( $str, $i, 2 ); // 每次取出两位字符赋给变量$tmpstr,即等于一个汉字                $i=$i+2; // 变量自加2            } else{                $tmpstr .= substr ( $str, $i, 1 ); // 如果不是汉字,则每次取出一位字符赋给变量$tmpstr                $i++;            }        }        return $tmpstr; // 返回字符串    }

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php中文字符串截取乱码问题解决
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址