PHP中如何在curl调用的JSON消息中传递变量?替换失败求助
问题解决方法
你的问题出在单引号字符串的变量解析规则和手动拼接JSON的语法问题上,以下是两种可行的修复方案:
方案一:使用双引号字符串解析变量与换行
PHP单引号内的变量不会被解析,\n也不会被识别为换行符,改用双引号包裹字符串,同时转义JSON结构里的双引号:
// 假设$saved1的值是"123" $saved1 = "123"; $reply_message = "{ \"messaging_type\": \"RESPONSE\", \"recipient\": { \"id\": \"1631126643573991\" }, \"message\": { \"text\": \"line1\n$saved1\nline3\" } }"; send_reply($access_token, $reply_message);
方案二:用数组构建数据再转JSON(推荐)
手动拼接JSON容易出现语法错误,更可靠的方式是先构建PHP数组,再用json_encode转换为标准JSON字符串:
$saved1 = "123"; // 构建消息数组 $reply_data = [ "messaging_type" => "RESPONSE", "recipient" => [ "id" => "1631126643573991" ], "message" => [ "text" => "line1\n{$saved1}\nline3" ] ]; // 转换为JSON字符串 $reply_message = json_encode($reply_data); send_reply($access_token, $reply_message);
关键说明
- 方案二中,
json_encode会自动处理JSON的引号转义,避免手动拼接的失误。 - 字符串里的
\n会被JSON识别为换行符,最终发送的消息会呈现预期的多行格式。
内容的提问来源于stack exchange,提问作者Zekkennaja
相关产品推荐
相关产品推荐

