有什么理由不在PHP中使用多字节函数吗


Is there any reason not to use multibyte functions in PHP?

我理解mb_函数为什么有用。但我不确定是否有任何理由继续使用旧的纯字符串函数。作为编程老师,我想知道我是否应该跳过这些,而选择它们的多字节版本。

相关问题:

  • 为什么在PHP中使用多字节字符串函数
  • 为什么PHP字符串函数默认情况下不是多字节安全的

并不是所有的字符串操作都被重新实现为mb_函数,例如没有等价于str_replace的mb_。原因是它并不是真的有必要,因为如果注意参数都在一致的编码中,str_replace在任何编码的字符串上都可以很好地工作。

因此,您不能简单地完全忽略所有"旧的纯字符串函数"。如果你在做一些需要编码和字符意识的事情,你需要使用mb_函数。出于其他目的,你不一定。

如果显式地尝试使用字节而不是字符,那么"旧的纯字符串函数"也很有用。例如,您可以使用substr来测试是否存在BOM:

if (substr($str, 0, 3) == "'xEF'xBB'xBF")