Я должен убрать строку, которая прибывает (копируют/вставляют) с различных приложений комплекта Microsoft Office (Excel, Доступ и Word), каждый с его собственным набором кодирования.
Я использую json_encode для отладки целей чтобы к способности видеть каждый закодированный символ.
Я могу убрать все, что я нашел до сих пор (\r \n) с str_replace, но с \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.
Существует ли путь вокруг этого? Кроме того, я чувствую, что изобретаю велосипед, существует ли функция/класс, которая полностью лишает КАЖДЫЙ possibile символ КАЖДОГО возможного кодирования?
____ РЕДАКТИРОВАНИЕ ____
После первых двух ответов я должен разъяснить, что мой пример ДЕЙСТВИТЕЛЬНО работает, потому что это - вывод от json_encode, не фактическая строка!
У меня работает, когда я копирую / вставляю ваш код. Попробуйте заменить двойные кавычки в вашем str_replace ()
одинарными кавычками или экранировать обратную косую черту ( "\\ u00a0"
).
Вы должны использовать одинарные кавычки, например:
str_replace('\u00a0', "",$string);
Или, если вы хотите использовать двойные кавычки, вы должны избегать обратной косой черты - это будет выглядеть так:
str_replace("\\u00a0", "",$string);