对于傻瓜来说,在PHP中单字节字符串和多字节字符串之间有什么区别,在哪些情况下我们应该考虑一个或另一个?
对于单字节字符串(例如US-ASCII, ISO 8859系列等)使用对于多字节字符串(例如UTF-8, UTF-16等)使用mb_substr:
// singlebyte strings $result = substr($myStr, 0, 5); // multibyte strings $result = mb_substr($myStr, 0, 5);
例如,如果我计划开发一些东西在中国使用,是否需要因为它们的特殊特性而采取特殊措施?Utf-8编码不够好吗?
函数strlen
(Single bytes)返回完整计数字节,函数mb_strlen
返回计数字符!
字符长度可以大于1字节(例如UTF-8)。
例如:
$myStr = '៘៥឴ឨឆ';
$result = substr($myStr, 0, 5);
$result = mb_substr($myStr, 0, 5, mb_detect_encoding($myStr));
函数substr
在这个例子中返回无效的值,因为字符有更多的一个字节,但函数mb_substr返回正确的数据