mb_substr 没有正确截断汉字

mb_substr not truncating Chinese characters properly

当我运行这段代码时:

$x = '国際交流基金 - 「松島図屏風」他 日米所蔵作品による夢の競演「宗達:創造の波」展開催';
var_dump(mb_substr($x, 0, 80));

我希望字符串不会被处理运行,因为它少于 80 个字符。

然而,这是输出:

string(80) "国際交流基金 - 「松島図屏風」他 日米所蔵作品による夢�"

知道为什么 mb_substr t运行 匹配它(而不是 t运行 正确匹配最后一个字符)吗?

设置函数使用的正确编码:

  1. 作为第四个参数 - 例如mb_substr($x, 0, 80, "UTF-8")
  2. 或通过mb_internal_encoding() prior to calling mb_substr()
  3. runtime configuration.

Example:

$x = '国際交流基金 - 「松島図屏風」他 日米所蔵作品による夢の競演「宗達:創造の波」展開催';
var_dump(mb_substr($x, 0, 80, "UTF-8"));

输出:

string(123) "国際交流基金 - 「松島図屏風」他 日米所蔵作品による夢の競演「宗達:創造の波」展開催"