2 回答
TA贡献1812条经验 获得超5个赞
与其尝试将一个字符串塞入另一个字符串,而是手动转义引号并希望获得最好的结果,而是使用数据结构并仅在完成后转换为 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条经验 获得超3个赞
我只是要告诉你为什么你的代码不起作用。因为您实际上向json 字符串注入了额外的反斜杠,而在工作示例中,没有真正的反斜杠(它们只是出现在代码中以告诉 PHP 下一个字符是双引号而不是结束字符)
这个字符串"\""
只包含一个双引号,而这个字符串'\"'
包含一个反斜杠和一个双引号
工作示例中的场景属性实际上包含这个
$scenes = '[{"text":"Definitions","image":"vesa_definitions.jpg"}]';
但这就是您通过使用所做的 addslashes()
$scenes = '[{\"text\":\"Definitions\",\"image\":\"vesa_definitions.jpg\"}]';
- 2 回答
- 0 关注
- 143 浏览
添加回答
举报