2

呵呵,看着所有这些字符串函数,有时我会感到困惑。一个是使用所有时间mb_函数,另一个是普通函数,所以问题很简单......

我应该什么时候使用mb_strpos();,什么时候应该使用普通的(strpos();)?

而且,是的,我知道mb_函数代表多字节,但这真的意味着,如果我只使用 utf-8 编码的字符串,我应该坚持使用mb_函数吗?

提前致谢!

4

3 回答 3

6

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
于 2011-04-19T06:08:20.220 回答
4

是的,如果使用 UTF-8 (这是一种多字节编码:一个字符可以使用多个字节),您应该使用这些mb_*函数。

非 mb 函数将作用于字节,而不是字符——当 1 个字符 == 1 个字节时这很好;但(例如) UTF-8并非如此。

于 2011-04-19T06:06:29.363 回答
3

我会说是的,这是 php 文档中的描述:

mbstring 提供了多字节特定的字符串函数,可帮助您处理 PHP 中的多字节编码。除此之外,mbstring 还处理可能的编码对之间的字符编码转换。mbstring 旨在处理基于 Unicode 的编码,例如 UTF-8 和 UCS-2 以及许多单字节编码,以方便......

如果您不确定 mb 扩展名是否已加载,您应该先检查一下,因为 mb-string 是非默认扩展名。

于 2011-04-19T06:07:28.997 回答