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

    php中文截取无乱码函数

    (*-*)浩(*-*)浩2019-09-07 09:43:39原创1698

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

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

    输出结果为�;(推荐学习:PHP编程从入门到精通

    原因分析: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中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php
    上一篇:php中单引号和双引号区别 下一篇:php中析构函数是什么
    大前端线上培训班

    相关文章推荐

    • php中PDO支持哪些数据类型• 能用eclipse写PHP吗?• php中$_post什么意思• php中的抽象类是什么?怎么用?

    全部评论我要评论

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

    PHP中文网