代码如下:$str = "好好好.ccccc..vvvv吃吃asdsdfasdaAaaaaaaaaabbbbbbbcbbbbbbbbbbbbbaaaaaaaaa啊啊啊啊";echo preg_replace("/(.)\\1+/i", "$1", $str);我要的结果是:好.c.v吃吃fasdabcba啊可是现在的结果:好好好.c.v吃吃asdsdfasdabcba啊啊啊啊正则 /(.)\1+/ 在Javascript下却又可以得到我想要的结果呢。PHP正则去掉重复字符,得不到我要的结果?
调试欢乐多
echo preg_replace("/[".chr(0xa1)."-".chr(0xff)."]|.)\\1+/i", "$1", $str);// 汉字是utf8
echo preg_replace("/[\x{4e00}-\x{9fa5}]|.)\\1+/iu", "$1", $str);
// 汉字是gbk
echo preg_replace("/([\x80-\xff]?.)\\1+/i", "$1", $str);// 汉字是utf8
echo preg_replace("/([\x{4e00}-\x{9fa5}]|.)\\1+/iu", "$1", $str);
$str = iconv("GBK", "UTF-8", $str);
或者
$str = mb_convert_encoding($str, "UTF-8", "GBK");