嘟嘟社区

请教PHP大佬


本帖最后由 Marlene 于 2021-11-5 22:50 编辑

已有一个变量

  1. $formatText

复制代码

后面我要post这个json

  1. $data = ‘{"message": { "rid": "XXXX", "msg": "XXXX"}}’;
  2. curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

复制代码

请问在msg后面应该怎么写来引用前面的$formatText变量(替换msg里的XXXX)呢?

本帖最后由 flyqie 于 2021-11-5 23:39 编辑
  1. $data = ‘{"message": { "rid": "XXXX", "msg": "’.$formatText.’"}}’;

复制代码

$formatText 中有特殊字符的话需要单独处理,个人不建议直接拼接json.

你这个场景下json_encode + json_decode 不会对性能产生多大影响,还不用转义特殊字符.

另外其实json_decode也可以不用的…如果是已经完全确定的json内容,直接提前定义成array然后json_encode就行了.

  1. $_data = json_decode(‘{"message": { "rid": "XXXX", "msg": "XXXX"}}’,true);
  2. $_data[‘message’][‘msg’] = $formatText;
  3. $data = json_encode($_data);

复制代码

$data = ‘{"message": { "rid": "XXXX", "msg": "’.$formatText.’"}}’;
楼上指出了我的错误。
$data = ‘{"message": { "rid": "XXXX", "msg":"’.$formatText.’")}}’;
应该是这样吧,感觉输出的json数据双引号还是要的。本人新手,仅供参考。
"msg":’.$formatText.’"XXXX"
本帖最后由 wwww961h 于 2021-11-5 22:47 编辑

算了,不是很懂

是的,粗心了
感谢楼上指出
  1. $data = ‘{"message": { "rid": "XXXX", "msg":$formatText)}}’;
  2. curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

复制代码

cangdao 发表于 2021-11-5 22:48
是的,粗心了
感谢楼上指出

楼上编辑掉了,请问修改了什么?

本帖最后由 gr58046576 于 2021-11-5 23:22 编辑
  1. $formatText
  2. $data = ‘{"message": { "rid": "XXXX", "msg":"’.$formatText.’")}}’;
  3. curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

复制代码

原来那个错了,我能想到的就是用连接字符了

本帖最后由 gr58046576 于 2021-11-5 23:23 编辑