使用preg_replace删除空格会在php

时间:2019-04-10 07:12:29

标签: php regex string preg-replace pcre

我想用一个空格替换多个空格或 ,所以我尝试使用preg_replace函数在下面的代码中

因此它可以正确替换空格,但还会在输出字符串中放置无法识别的字符,

对于演示,我使用$string变量,但实际上它可以是服务器端数据库中的数据,请参见以下代码:

<?php 
     $string = "123080345&nbsp;900113760  165604100012";
     echo preg_replace("/(\s|&nbsp;)+/",' ',$string);

     //output: 123080345� 900113760� 165604100012
     //expected output: 123080345 900113760 165604100012

所以我的问题是 为什么preg_replace放置无法识别的字符以及如何获得清晰的输出

其中没有无法识别的字符,如我在上面的代码中显示为预期输出

1 个答案:

答案 0 :(得分:0)

尽管它只是带有数字spaces&nbsp;的字符串,

但是我认为在数据库中它是 UTF-8编码的字符串,因此当我尝试使用preg_replace时,它将返回无法识别的字符。

所以当我尝试使用 /u标识符为unicode的相同正则表达式

时,它就可以工作了

所以下面是我的解决方法:

<?php 

     $string = "123080345&nbsp;900113760  165604100012";
     echo preg_replace("/(\s|&nbsp;)+/u",' ',$string); //u for unicode characters 

     //output: 123080345 900113760 165604100012

我希望它对某人有帮助,谢谢。