zoukankan      html  css  js  c++  java
  • 一个例子说明substr(), mb_substr() 和 mb_strcut()之间的区别

    例子来自PHP官方文档,我只是翻译下。

    http://www.php.net/manual/zh/function.mb-strcut.php

    header( 'Content-Type:text/html;charset=utf-8 ');
    mb_internal_encoding('UTF-8');
    $string = 'cioèòà';
    var_dump(
    substr($string, 0, 6),
    mb_substr($string, 0, 6),
    mb_strcut($string, 0, 6)
    );

    输出:

    Output:
    string(6) "cioè?"
    string(9) "cioèòà"
    string(5) "cioè"

    解释:

    $string 长度是 9 字节(bytes)
    c - 1 byte
    i - 1 byte
    o - 1 byte
    è - 2 bytes
    ò - 2 bytes
    à - 2 bytes

    substr()按字节截取,精确的返回6个字节长度的字符串。因此 ò 这个完整的字符,他也会毫不留情的咔嚓一下,一截两段。后果会出现难看的问号字符。

    mb_strcut()同样按字节截取,但是碰到上面的情况,要截取最后一个字符中的字节,会忽略掉这个字符。

    所以$string = mb_strcut($string, 6); strlen($string) <= 6      截取后的长度可能会小于要求的长度

    mb_substr()按字符截取,所以返回6个字符长度的字符串,但注意原字符串有9个字节。

  • 相关阅读:
    CodeForces
    HihoCoder
    HihoCoder
    CodeForces
    CodeForces
    CodeForces
    HihoCoder
    HihoCoder
    CodeForces
    HihoCoder
  • 原文地址:https://www.cnblogs.com/mafeifan/p/3275352.html
Copyright © 2011-2022 走看看