0pl*_*us1 20 php encoding str-replace
我需要清理来自各种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);
Run Code Online (Sandbox Code Playgroud)
收益:
mail@mail.com\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0;mail@mail.com
Run Code Online (Sandbox Code Playgroud)
那是完全一样的; 它完全忽略了\ u00a0.
有没有解决的办法?此外,我觉得我正在重新发明轮子,是否有一个功能/类完全剥离每个可能编码的可能的字符?
____编辑____
在前两个回复后,我需要澄清我的示例是否有效,因为它是json_encode的输出,而不是实际的字符串!
小智 47
通过ord()与substr()我的包含\ u00a0的字符串组合,我找到了以下诅咒:
$text = str_replace( chr( 194 ) . chr( 160 ), ' ', $text );
Run Code Online (Sandbox Code Playgroud)
我只是遇到了同样的问题。显然,对于任何包含“不间断空格”的字符串,PHP 的 json_encode 将返回 null。
解决方案是将其替换为常规空间:
str_replace(chr(160),' ');
Run Code Online (Sandbox Code Playgroud)
我希望这对某人有所帮助 - 我花了一个小时才弄明白。
| 归档时间: |
|
| 查看次数: |
60352 次 |
| 最近记录: |