我对preg_replace和字符集有一个恼人的问题。我连续做了几个preg_replace,但不幸的是,当preg_replace第一次插入像äöüß这样的特殊字符时,我在随后的调用中得到了PREG_BAD_UTF8_ERROR。
除了插入的特殊字符可以很好地显示之外,它们还会中断任何后续的preg_replace调用。preg_是否仅限utf-8?
preg_replace正在处理的文本来自MySQL数据库,也是用MySQL中的值在php文件中精心制作的。在第一次用特殊字符替换之前,mb_detect_encoding()会为文本指定ASCII,然后它会检测到UTF-8,所以它会发生变化,这可能就是问题所在。
作为参考,我正在使用iso-8859-1编码(PHP、MySQL、元字符集)。此外,我有一个替代字符串上的htmlentities的变通方法,目前正在工作。
你有什么办法解决这个问题吗?
发布于 2013-11-21 03:44:34
您正在寻找的可能是mb_ereg_replace。它可以处理多字节编码,并且在不同的编码方式下应该可以很好地执行。请务必将mb_regex_encoding与它一起使用。
https://stackoverflow.com/questions/20103692
复制相似问题