2 回答

TA貢獻1812條經(jīng)驗 獲得超5個贊
與其嘗試將一個字符串塞入另一個字符串,而是手動轉(zhuǎn)義引號并希望獲得最好的結(jié)果,而是使用數(shù)據(jù)結(jié)構(gòu)并僅在完成后轉(zhuǎn)換為 JSON。
像這樣的東西:
foreach ($products as $product) {
if ($product['image_one_url']) {
$product_image = $product['image_one_url'];
} else {
$product_image = 'no_image.png';
}
$string[] = [
"text" => $product['product_name'],
"image" => $product_image
];
}
$template = json_decode("{\"videoBackground\": \"background.jpg\", \"audio_mood\": \"inspirational\", \"logoImage\": \"logo.png\", \"title\": \"Products\", \"themeId\": \"5a15310cabc5e17e6bf29525\"}");
$template['scenes'] = $string;
// Now you can encode the whole thing to JSON in one go
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($template));

TA貢獻1942條經(jīng)驗 獲得超3個贊
我只是要告訴你為什么你的代碼不起作用。因為您實際上向json 字符串注入了額外的反斜杠,而在工作示例中,沒有真正的反斜杠(它們只是出現(xiàn)在代碼中以告訴 PHP 下一個字符是雙引號而不是結(jié)束字符)
這個字符串"\""
只包含一個雙引號,而這個字符串'\"'
包含一個反斜杠和一個雙引號
工作示例中的場景屬性實際上包含這個
$scenes = '[{"text":"Definitions","image":"vesa_definitions.jpg"}]';
但這就是您通過使用所做的 addslashes()
$scenes = '[{\"text\":\"Definitions\",\"image\":\"vesa_definitions.jpg\"}]';
- 2 回答
- 0 關(guān)注
- 172 瀏覽
添加回答
舉報