You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 19:36:31