tangguo

我有一个带有“ \ u00a0”的字符串,我需要将其替换为“” str_replace failed

java

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

我将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。

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

_编辑_

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


阅读 1003

收藏
2020-11-04

共2个答案

小编典典

通过ord()substr()包含\ u00a0的字符串结合使用,我发现以下诅咒起作用了:

$text = str_replace( chr( 194 ) . chr( 160 ), ' ', $text );
2020-11-04
小编典典

当我复制/粘贴您的代码时,对我有用。尝试将单引号中的双引号替换为str_replace()单引号,或转义反斜杠("\\u00a0")

2020-11-04