我有一个带有“\u00a0”的字符串,我需要用“”替换它str_replace失败

2022-08-30 16:20:19

我需要清理来自各种Microsoft Office套件应用程序(ExcelAccessWord)的字符串(复制/粘贴),每个应用程序都有自己的一组编码。

我正在使用json_encode进行调试,以便能够看到每个编码字符。

我能够用str_replace清理到目前为止发现的所有内容(\r \n),但是使用\u00a0我没有运气。

$string = 'mail@mail.com\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0;mail@mail.com'; //this is the output from json_encode

$clean = str_replace("\u00a0", "",$string);

返回:

mail@mail.com\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0;mail@mail.com

这是完全相同的。它完全忽略 \u00a0。

有没有办法解决这个问题?另外,我觉得我正在重新发明轮子,是否有一个函数/类可以完全剥离每个可能编码的每个可能的字符?

____EDIT____

在前两个回复之后,我需要澄清我的示例确实有效,因为它是json_encode的输出,而不是实际的字符串!


答案 1

通过与包含 \u00a0 的字符串组合,我发现以下诅咒有效:ord()substr()

$text = str_replace( chr( 194 ) . chr( 160 ), ' ', $text );

答案 2

试试这个:

$str = str_replace("\u{00a0}", ' ', $str);

推荐