使用substr(),您可以省略第三个参数以获取整个字符串的其余部分:

substr('abcdefg', 2) // returns "cdefg"
您不能使用mb_substr()做同样的事情:
mb_substr('abcdefg', 2, null, 'UTF-8'); // returns empty string
我只发现了奇怪而丑陋的解决方案。
  • 设置一个非常高的数字作为长度:$a = mb_substr('abcdefg', 2, 9999999999, 'UTF-8');
  • 计算数字:$a = mb_substr('abcdefg', 2, mb_strlen('abcdefg', 'UTF-8') - 2, 'UTF-8');
  • 通过使用mb_internal_encoding()省略字符集参数:$temp = mb_internal_encoding(); // prevent action at a distancemb_internal_encoding('UTF-8');$a = mb_substr('abcdefg', 2);mb_internal_encoding($temp);

  • 没有真正的解决方案吗?

    最佳答案

    更改日志将其显示为版本5.4.8(2012年10月18日)中的错误修复。

    http://us.php.net/ChangeLog-5.php



    这也是到拉取请求线程的链接:https://github.com/php/php-src/pull/133

    09-11 19:03