【问题标题】:PHP multi-byte alternatives UTF8PHP 多字节替代 UTF8
【发布时间】:2012-08-24 14:42:59
【问题描述】:

我一直在寻找字符串操作函数的 UTF8 安全替代方案。我发现了许多不同的意见和建议。我想问一下以下函数是否会导致 UTF-8 出现问题,如果会,我应该改用什么。我知道 PHP 手册中的 mb_ 前缀函数列表,但并不是我使用的所有函数。

功能有:内爆、爆炸、str_replace、preg_match、preg_replace

谢谢

【问题讨论】:

  • preg_ 函数族可以正常使用 unicode,但您需要在参数中指定您在字符串中使用 unicode。
  • @AleksG 感谢您的回复。您还知道 implode、explode 和 str_replace 是什么吗?
  • 那些是 UTF-8 安全的,前提是一切都是有效的 UTF-8。没有有效的 UTF-8 字节序列是某个其他 UTF-8 字节序列的子字节串。

标签: php utf-8 multibyte-functions


【解决方案1】:

explode 只是查找相同的字节序列并在该点分隔字符串。由于 UTF-8 与 ASCII 安全地向后兼容,因此无需担心,它会正常工作。 implode 只是将字符串组合在一起,由于 UTF-8 的特性,它也可以正常工作。 str_replace 的工作原理相同。只要您使用/u modifierpreg_ 函数就可以正常工作。

【讨论】:

    【解决方案2】:

    如果您需要安全地使用 UTF8 字符进行操作,您可以这样做:

    mb_internal_encoding('UTF-8');
    preg_replace( '`...`u', '...', $string ) // with the u (unicode) modifier
    

    【讨论】:

    • mb_internal_encoding 仅对 mb_ 函数有用。它与preg_ 函数无关。
    猜你喜欢
    • 2013-01-10
    • 2014-04-11
    • 2012-07-14
    • 1970-01-01
    • 2014-02-27
    • 1970-01-01
    • 1970-01-01
    • 2015-02-02
    • 2011-11-22
    相关资源
    最近更新 更多