【问题标题】:Is there any reason not to use multibyte functions in PHP? [closed]有什么理由不在 PHP 中使用多字节函数吗? [关闭]
【发布时间】:2013-12-03 02:49:58
【问题描述】:

我明白为什么mb_ 函数很有用。但我不确定是否有任何理由继续使用旧的纯字符串函数。作为编程老师,我想知道我是否应该跳过那些支持他们的多字节版本。

相关问题:

【问题讨论】:

  • 至少你可以显示一字节ASCII符号和多字节字符之间的区别。
  • 是的,当我教 Python 时,我们通常会遇到编码问题并谈论字符串表示和其他东西。但这更像是一个高级的 PHP 动手类...
  • 由于 PHP 在 字节数组 之外没有任何字符串的“高级”概念,因此在 PHP 中讨论这些主题就更加贴切了。例如,在 Javascript 中,您几乎可以忽略编码的主题,直到您尝试使用非常高的代码点,在 Python 3 中,如果您正确设置了 Unicode 三明治,您可以在很大程度上忽略编码。在 PHP 中,尽管您总是使用低级字节。

标签: php utf-8


【解决方案1】:

并非所有字符串操作都重新实现为 mb_ 函数,例如没有 mb_ 等效于 str_replace。原因是它并不是真正需要的,因为str_replace 在任何编码的字符串上都可以正常工作,如果你注意参数都是一致的编码。

因此,您不能完全忽略所有“旧的纯字符串函数”。如果您正在做一些需要编码和字符意识的事情,您需要使用 mb_ 函数。出于其他目的,您不必这样做。

如果您明确尝试使用字节而不是字符,“旧的纯字符串函数”也很有帮助。例如,您可以使用substr 来测试是否存在 BOM:

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

【讨论】:

  • 我不需要忽略非mb函数,但我(大部分)可以,对吧?
  • 您需要知道每个函数的确切作用以及何时使用它。我不会告诉你你可以完全忽略它们。
猜你喜欢
  • 2013-04-05
  • 2012-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-16
  • 2011-10-12
  • 2016-04-10
相关资源
最近更新 更多