我需要清理来自各种 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 的输出,而不是实际的字符串!
最佳答案
通过在包含\u00a0 的字符串上结合使用 ord()
和 substr()
,我发现以下诅咒起作用了:
$text = str_replace( chr( 194 ) . chr( 160 ), ' ', $text );
关于php - 我有一个带有 "\u00a0"的字符串,我需要用 ""替换它 str_replace 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2592502/