标签: php string character special-characters
我使用string[0]缩短并显示用户名/姓氏的第一个字符。在用户的名字以ö,ä,ü等特殊字符开头之前,它一直很有效。
string[0]
例如:
$name = 'über'; echo $name[0]; // echoes nothing
与此同时,我正在使用mb_substr($string, 0, 1)。但我真的很想念$name[0] :)。它更快更短。我仍然想知道原因是什么,以及是否有办法将此语法与特殊字符一起使用。
mb_substr($string, 0, 1)
$name[0]
答案 0 :(得分:7)
字符ü不是单字节字符。它是一个多字节(双字节)字符。
ü
您正在尝试访问字符串的第一个字节,因此它无法正常工作。正是出于这个原因,mb_substr已被设计出来。
mb_substr
根据字符数执行多字节安全substr()操作。位置从str的开头计算。第一个字符的位置是0.第二个字符的位置是1,依此类推。
substr()
如果您只是尝试$name[0],它会得到多字节字符的第一个字符,它只是一个空字符串或一个显示{{1}的控制字符在..之上。 (仅举例来说,例如u + .. = u)。
..
u