Как убрать \"

Строка (JSON): {"title":"\"Copper\""}

я пытался

$output = str_replace('\\"', "", $output);

но я получил

{"title":""      Copper""}

Что я ожидаю

{"title":"Copper"}

2 ответа

Решение

Вы генерируете строку JSON со своим собственным кодом (в отличие от стороннего)? Если это так, опубликуйте код, который генерирует строку JSON, и подробно опишите, что вы сделали на этом этапе, чтобы попытаться решить проблему.

Если у вас нет контроля над строкой JSON (и / или создатель строки JSON не / не может исправить это), то хакерский способ исправить это будет:

$output = str_replace( '\"' , '' , $output );

Ваш пример кода неполон, потому что то, что вы дали, работает:

php > $s='{"title":"\"Copper\""}';
php > echo $s;
{"title":"\"Copper\""}
php > echo str_replace('\\"',"",$s);
{"title":"Copper"}

(то есть от php -a интерактивная сессия)

Другими словами, ваши входные данные не соответствуют вашим ожиданиям.

Кстати, как уже говорили другие, было бы лучше использовать json_decode на JSON. Затем сделайте строковые манипуляции только на поле интереса. Тогда используйте json_encode превратить его обратно в JSON. С помощью str_replace или регулярные выражения могут работать для простых случаев, но как только вы получаете неожиданные данные, они могут пойти ужасно неправильно.

Другие вопросы по тегам