• 技术文章 >后端开发 >PHP问题

    php substr函数截取中文乱码怎么办

    藏色散人藏色散人2021-09-20 10:47:36原创134

    php substr函数截取中文出现乱码是因为substr函数会把一个UTF-8的中文字符当做3个字节来处理,其解决乱码的方法就是更换使用mb_strlen和mb_substr函数即可。

    本文操作环境:Windows7系统、PHP7.1、Dell G3电脑。

    php substr函数截取中文乱码怎么办?

    PHP中substr截取中文乱码解决方案

    在PHP中经常使用substr来进行字符串的截取,但是当我们用它来实现对中文字符进行截取的时候则会发生乱码问题,比如说:

    <?php
    $mystring="今天天气真好";
    $mysubstring=substr($mystring,0,2);
    echo $mysubstring;
    ?>

    输出结果为�;

    原因分析:substr函数原型为:string substr ( string $string , int $start [, int $length ] ),其中$length表示返回字节长度,而一个中文占两个字节,对于一个UTF-8的中文字符,会把它当做3个字节来处理。

    <?php
    $length=strlen($mystring);echo $length;//输出结果为18
    ?>

    也就是说我们可以用令$length为3,这样就会成功返回一个“今”字。这样的话如果中文和英文混杂的话则需要我们好好地计算一下$length了。

    那么有更好的解决办法吗?Php给出了另外的函数mb_strlen和mb_substr

    <?php
    $length=mb_strlen($mystring);
    $mysub=mb_substr($mystring,0,4);
    echo "the length is:$length,","the substr is:$mysub";
    ?>

    输出结果为:the length is:6,the substr is:今天天气
    mb_strlen函数原型为int mb_strlen(string string_input, string encode);encode默认为UTF-8,它会将为UTF-8编码的中文字符算作一个

    注意:mb_strlen与mb_substr并不是PHP的核心函数,使用前需要打开php.ini中的extension=php_mbstring.dll这一项

    推荐学习:《PHP视频教程

    以上就是php substr函数截取中文乱码怎么办的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:substr 中文
    上一篇:php怎么去掉富文本样式 下一篇:php ipv6怎么转ipv4
    大前端线上培训班

    相关文章推荐

    • 如何解决php get传递参数乱码问题• 如何通过common.inc.php解决乱码问题• php urlencode怎么解决乱码问题• 如何解决flex php中文乱码问题

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网