作为在平面文件中插入产品名称的一部分,我必须将它们最多截断为50个字符。
但是,某些产品名称包含带重音的字符,如果它们位于第50个位置(或左右),则截断的产品名称无法正确显示。
以下是如何复制问题(PHP):
$tmp = "Kaspersky Anti-Virus 2015 (Renovación) Suscripción Anual 3 PC";
$xxx = substr(trim($tmp), 0, 50);
echo $tmp . PHP_EOL;
echo $xxx . PHP_EOL;
显示:
Kaspersky Anti-Virus 2015 (Renovación) Suscripción Anual 3 PC
Kaspersky Anti-Virus 2015 (Renovación) Suscripci�
如何摆脱这些无法显示的角色?
答案 0 :(得分:1)
您需要使用mb_substr代替substr
:
$tmp = "Kaspersky Anti-Virus 2015 (Renovación) Suscripción Anual 3 PC";
$xxx = mb_substr(trim($tmp), 0, 50);
echo $tmp . PHP_EOL;
echo $xxx . PHP_EOL;
来自文档:
根据数量执行多字节安全substr()操作 字符。位置从str的开头计算。第一 字符的位置为0.第二个字符位置为1,依此类推。