Bizzare多字节preg_replace问题.它正在改变我的数据到笑脸!

Byr*_*ock 3 php preg-replace

在Windows上使用PHP 5.3.1.

我只是想在数字和字母之间添加空格,但PHP正在破坏我的数据!

$text = "TUES:8:30AM-5:00PMTHURS:8:30AM-5:00PMSAT:8:00AM-1:00PM";
echo preg_replace("/([0-9]+)([A-Z]+)/","\1 \2",$text);
> TUES:8:? ?AM-5:? ?PMTHURS:8:? ?AM-5:? ?PMSAT:8:? ?AM-1:? ?PM
Run Code Online (Sandbox Code Playgroud)

我的文件类型是ANSI,源中没有unicode.

这有什么好玩的?

smc*_*ill 5

尝试使用$你的反向指示,而不是'\':

echo preg_replace("/(\d)(\w)/","$1 $2",$text);
Run Code Online (Sandbox Code Playgroud)

我打赌\1正在被翻译成一些时髦的东西......注意奇怪的角色在分钟输入为'30'和'00'之间不会改变

PHP手册说,你应该双逃不出你的反向引用,或使用$(如果您使用的是4.04版或更新版本)