使用 preg_replace 删除空格会在 php 中的字符串中输出无法识别的字符
Removing spaces with preg_replace outputs unrecognized characters in string in php
我想用一个 space 替换多个 space 或
所以我尝试使用 preg_replace
函数
下面的代码
所以它正确地替换了 spaces 但它也在输出字符串中放置了无法识别的字符,
为了演示,我使用了 $string
变量,但实际上它可以是来自服务器端数据库的数据,请参见下面的代码:
<?php
$string = "123080345 900113760 165604100012";
echo preg_replace("/(\s| )+/",' ',$string);
//output: 123080345� 900113760� 165604100012
//expected output: 123080345 900113760 165604100012
所以我的问题是 为什么 preg_replace 放置无法识别的字符以及如何获得干净清晰的输出,
没有无法识别的字符,正如我在上面的代码中显示的 预期输出
虽然它只是带数字的字符串,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
希望对大家有所帮助,谢谢
我想用一个 space 替换多个 space 或
所以我尝试使用 preg_replace
函数
所以它正确地替换了 spaces 但它也在输出字符串中放置了无法识别的字符,
为了演示,我使用了 $string
变量,但实际上它可以是来自服务器端数据库的数据,请参见下面的代码:
<?php
$string = "123080345 900113760 165604100012";
echo preg_replace("/(\s| )+/",' ',$string);
//output: 123080345� 900113760� 165604100012
//expected output: 123080345 900113760 165604100012
所以我的问题是 为什么 preg_replace 放置无法识别的字符以及如何获得干净清晰的输出,
没有无法识别的字符,正如我在上面的代码中显示的 预期输出
虽然它只是带数字的字符串,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
希望对大家有所帮助,谢谢