【问题标题】:preg_replace PREG_BAD_UTF8_ERRORpreg_replace PREG_BAD_UTF8_ERROR
【发布时间】:2013-11-20 18:13:46
【问题描述】:

preg_replace 和字符集有一个烦人的问题。我正在连续执行一对preg_replace,但不幸的是,preg_replace 第一次插入任何特殊字符(如äöüß)时,我在后续调用中得到PREG_BAD_UTF8_ERROR

除了插入的特殊字符显示得很好之外,它们只会中断任何后续的preg_replace 调用。只有 preg_ utf-8 吗?

preg_replace 正在处理的文本来自 MySQL 数据库,并且替换是在 php 文件中使用来自 MySQL 的值制作的。 mb_detect_encoding() 表示 ASCII 用于文本,直到第一次用特殊字符替换,然后它检测到 UTF-8,所以它发生了变化,这可能是问题所在。

为了您的信息,我正在使用 iso-8859-1 编码(PHP、MySQL、元字符集)。此外,我在替换字符串上有一个 htmlentities 的解决方法,目前正在使用。

关于如何解决它的任何想法?

【问题讨论】:

    标签: php character-encoding preg-replace


    【解决方案1】:

    您正在寻找的可能是mb_ereg_replace。它处理多字节编码,并且应该与不同的编码一起执行。请务必同时使用mb_regex_encoding

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-14
      • 2013-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-29
      • 2011-01-27
      相关资源
      最近更新 更多