Json_encode 增加反斜線:揭開謎底
在JavaScript 領域,json_encode 長期以來一直是將資料編碼值得為JSON 格式的編碼值得為JSON 格式的信賴的盟友。然而,一些開發者遇到了一個意想不到的現象,json_encode 在輸出中引入了反斜線。
上傳難題
使用 json_encode 傳回 JSON 資料時會出現這樣的狀況檔案上傳。考慮以下程式碼:
print_r($result); // Associative array $encoded_result = json_encode($result); // Valid JSON echo $encoded_result;
無法解釋的反斜線
令開發人員驚訝的是,產生的JSON 包含不需要的反斜線:
{"logo_url":"http:\/\/mysite.com\/uploads\/gallery\/7f\/3b\/f65ab8165d_logo.jpeg","img_id":"54","feedback":{"message":"File uploaded","success":true}}
精確定位罪魁禍首
初步調查顯示,反斜線是在 json_encode 和瀏覽器解析 JSON 資料之間的某處添加的。
alert(data.toSource()); // Result: invalid JSON with added "status:200"
隱藏變數
仔細檢查發現了一個意想不到的罪魁禍首: Plupload 綁定事件。
uploader.bind('FileUploaded', function(up, file, data) { alert(data.toSource()); $('#' + file.id + " b").html("100%"); });
Plupload,一個流行的檔案上傳庫,似乎正在操縱返回的數據,添加“status:200”屬性並對斜杠進行編碼。
解決方案:逃避斜線
阻止不需要的東西反斜線,程式碼被修改為在json_encode 函數呼叫中包含「JSON_UNESCAPED_SLASHES」選項:
$encoded_result = json_encode($result, JSON_UNESCAPED_SLASHES);
此選項有效地停用正斜線的轉義,從而產生所需的JSON輸出:
{"logo_url":"http://mysite.com/uploads/gallery/7f/3b/f65ab8165d_logo.jpeg","img_id":"54","feedback":{"message":"File uploaded","success":true}}
揭曉真相
總而言之,json_encode 輸出中加入反斜線歸因於 Plupload 綁定事件對資料的意外操作。透過合併「JSON_UNESCAPED_SLASHES」選項,開發人員可以防止這種不必要的轉義字元幹擾他們的 JSON 資料。
以上是為什麼 `json_encode` 添加反斜線以及如何防止它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!