【发布时间】: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