PHP, почему вы избегаете моих котировок?

Возможный дубликат:
Почему символы escape добавляются к значению скрытого ввода

Итак, у меня есть файл Save.php.

Требуется две вещи: файл и новое содержимое.

Вы используете его, отправив запрос, например '/Resources/Save.php?file=/Resources/Data.json&contents={"Hey":"There"}' .

… но, конечно, кодирование url. 🙂 Я оставил все незакодированные для простоты и удобочитаемости.

Файл работает, но вместо содержимого.

 {"Hey":"There"} 

..Я нахожу..

 {\"Hey\":\"There\"} 

.. который, конечно же, выдает ошибку при попытке использовать JSON.parse при получении файла JSON позже через XHR.

Чтобы сохранить содержимое, я просто использую ..

 file_put_contents($url, $contents); 

Что я могу сделать, чтобы избавиться от обратных косых черт?

Поверните magic_quotes в PHP.ini.

Похоже, вы включили magic_quotes .

Если это так, отключите его – или используйте функцию отключения времени выполнения

Попробуй это:

 file_put_contents($url, stripslashes($contents)); 

вы, вероятно, включили магические кавычки, только две вещи, которые вы можете сделать. отключите магические кавычки в php.ini или вызовите stripslashes() на глобальные переменные $_GET и $_POST .

FYI, используйте $_GET['contents'] в отличие от $contents ; более новые версии php не будут создавать $contents var.

Вы должны отключить magic_quotes в конфигурационном файле php.ini. Однако, если это невозможно, вы также можете использовать stripslashes() чтобы избавиться от автоматического экранирования.

Если вы не можете отключить магические кавычки для своего сервера, вам нужно проверить, get_magic_quotes_gpc() ли это с помощью get_magic_quotes_gpc() и если это правда, stripslashes() .