呵呵,看着所有这些字符串函数,有时我会感到困惑。一个是使用所有时间mb_
函数,另一个是普通函数,所以问题很简单......
我应该什么时候使用mb_strpos();
,什么时候应该使用普通的(strpos();
)?
而且,是的,我知道mb_
函数代表多字节,但这真的意味着,如果我只使用 utf-8 编码的字符串,我应该坚持使用mb_
函数吗?
提前致谢!
mb_
每当您希望使用非纯 ASCII 文本时,都应该使用这些函数。即,即使您使用 UTF-8,您也可以使用常规字符串函数,只要您使用它们的所有字符串仅包含 ASCII 字符。
strpos('foobar', 'foo') // fine in any (ASCII-compatible) encoding, including UTF-8
strpos('ふーばー', 'ふー') // won't work as expected, use mb_strpos instead
是的,如果使用 UTF-8 (这是一种多字节编码:一个字符可以使用多个字节),您应该使用这些mb_*
函数。
非 mb 函数将作用于字节,而不是字符——当 1 个字符 == 1 个字节时这很好;但(例如) UTF-8并非如此。
我会说是的,这是 php 文档中的描述:
mbstring 提供了多字节特定的字符串函数,可帮助您处理 PHP 中的多字节编码。除此之外,mbstring 还处理可能的编码对之间的字符编码转换。mbstring 旨在处理基于 Unicode 的编码,例如 UTF-8 和 UCS-2 以及许多单字节编码,以方便......
如果您不确定 mb 扩展名是否已加载,您应该先检查一下,因为 mb-string 是非默认扩展名。