如何在PHP中用日本字符剪切一部分字符串?

时间:2014-11-28 10:28:35

标签: php substr

我有一个字符串:$fullname = 'ワタナベサン';

一些行代码用于剪切条件的一部分:

if (strlen ( $fullname ) >= 14)
    $this->FullName = substr ( $fullname, 0, 10 ) . '...';
else
    $this->FullName = $fullname;

但结果显示为错误的字符串:'ワタナ�...'

2 个答案:

答案 0 :(得分:1)

使用日文字符时,您需要使用字符串函数的多字节版本。使用mb_substr代替substr和mb_strlen代替strlen。

答案 1 :(得分:0)

substr和所有其他核心PHP字符串函数不是多字节感知,并且无法正确处理多字节字符串。它们只能在ASCII字符串或其他单字节编码上正常工作。要正确操作多字节字符串,在大多数情况下,您需要使用MB extension中的等效函数。

有关详细信息,请参阅What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text。欢迎来到人物编码的兔子洞;你有很多东西需要学习。 :O)