我想用一个空格替换多个空格或
,所以我尝试使用preg_replace
函数在下面的代码中
因此它可以正确替换空格,但还会在输出字符串中放置无法识别的字符,
对于演示,我使用$string
变量,但实际上它可以是服务器端数据库中的数据,请参见以下代码:
<?php
$string = "123080345 900113760 165604100012";
echo preg_replace("/(\s| )+/",' ',$string);
//output: 123080345� 900113760� 165604100012
//expected output: 123080345 900113760 165604100012
所以我的问题是 为什么preg_replace放置无法识别的字符以及如何获得清晰的输出 ,
其中没有无法识别的字符,如我在上面的代码中显示为预期输出
答案 0 :(得分:0)
尽管它只是带有数字spaces
和
的字符串,
但是我认为在数据库中它是 UTF-8
编码的字符串,因此当我尝试使用preg_replace
时,它将返回无法识别的字符。
所以当我尝试使用 /u
标识符为unicode
的相同正则表达式
所以下面是我的解决方法:
<?php
$string = "123080345 900113760 165604100012";
echo preg_replace("/(\s| )+/u",' ',$string); //u for unicode characters
//output: 123080345 900113760 165604100012
我希望它对某人有帮助,谢谢。