preg_replace PREG_BAD_UTF8_ERROR

时间:2013-11-20 18:13:47

标签: php character-encoding preg-replace

我对preg_replace和字符集有一个恼人的问题。我连续做了几个preg_replace但不幸的是第一次preg_replace插入任何像äöüß这样的特殊字符时我在后续调用中得到PREG_BAD_UTF8_ERROR

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

正在研究的文本preg_replace来自MySQL数据库,替换是在php文件中使用来自MySQL的值制作的。 mb_detect_encoding()在第一次使用特殊字符替换之前对ASCIIUTF-8,然后会检测到{{1}},因此它会发生变化,这可能就是问题所在。

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

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

1 个答案:

答案 0 :(得分:1)

您正在寻找的可能是mb_ereg_replace。它处理多字节编码,应该与不同的编码表现良好。请务必同时使用mb_regex_encoding