2011-06-12 24 views
6

可能重複:
Why are escape characters being added to the value of the hidden inputPHP,你爲什麼逃避我的報價?

所以,我有一個名爲Save.php文件。

它需要兩件事:一個文件和新的內容。

您可以通過發送類似'/Resources/Save.php?file=/Resources/Data.json&contents={"Hey":"There"}'的請求來使用它。

..但當然,編碼的網址。 :)爲了簡單和可讀性,我將它全部解碼。

的文件工作,但,而不是內容是..

{"Hey":"There"} 

..我發現..嘗試使用JSON.parse時當

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

當然..這將引發錯誤稍後通過XHR獲取JSON文件。

要保存的內容,我只是用..

file_put_contents($url, $contents); 

我能做些什麼來擺脫反斜線?

+0

您的內容保存到文件就在,什麼是'$ _GET [ '內容']'有哪些?它是否有'{「嘿」:「There」}或'{\「Hey \」:\「There \」}'? – Shef 2011-06-12 21:00:07

+0

它們在使用echo時也顯示出來,但我並沒有太多地使用PHP,它可能會添加它們或其他東西。 xD – Kayla 2011-06-12 21:01:53

+0

相關:http://stackoverflow.com/questions/220437/magic-quotes-in-php – Orbling 2011-06-12 21:02:59

回答

8

在PHP.ini中關閉magic_quotes

+7

魔法從來不會擅長開發。 – SLaks 2011-06-12 20:58:22

+0

我在Mac OS 10.6中使用預裝版本的PHP,所以我從來沒有在任何地方見過PHP.ini。你有什麼想法嗎? – Kayla 2011-06-12 20:58:50

+0

魔法永不好。 – gd1 2011-06-12 21:00:07

3

魔術引號,只有兩件事情可以做。請在您的php.ini中禁用魔術引號或撥打$_GET$_POST全球通的號碼stripslashes()

供參考,使用$_GET['contents']而不是$contents;較新版本的PHP將不會創建$contents變種。

+0

我在腳本的前面手動創建它。 – Kayla 2011-06-12 20:59:34

2

您應該在您的php.ini配置文件中禁用magic_quotes。但是,如果這是不可能的,你也可以使用stripslashes()函數來擺脫自動轉義。

3

試試這個:

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