使用utf8,substr无法正常工作

Az *_* Dr 5 php mysql utf-8 substr right-to-left

我使用substr方法来访问字符串的前20个字符.它在正常情况下工作正常,但在使用rtl语言(utf8)时,它会给我错误的结果(显示大约10个字符).我在网上搜索过,但发现第n个问题很有用.这是我的代码行:

substr($article['CBody'],0,20);
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Alp*_*ale 10

如果您正在使用编码为UTF-8的字符串,当您尝试使用PHP substr函数获取其中的一部分时,可能会丢失字符.发生这种情况是因为UTF-8字符不限于一个字节,它们具有可变长度以匹配Unicode字符,介于1到4个字节之间.

您可以使用mb_substr(),它的工作方式与substr几乎相同,但区别在于您可以添加新参数来指定编码类型,无论是否是UTF-8不同的编码.

试试这个:

$str = mb_substr($article['CBody'], 0, 20, 'UTF-8');

echo utf8_decode($str); 
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.