PHP CURLOPT_POSTFIELDS如何传入$lead['name']等动态值
PHP 动态替换CURL POST参数实现方案
优先推荐用「数组转JSON」的实现方式,可完全规避手动拼接JSON字符串带来的语法错误、转义失败问题:
- 第一步:构造和请求结构一致的PHP关联数组,填入动态变量
$requestData = [ 'datalist' => [ [ 'Firstname' => $lead['name'], 'Lastname' => $lead['lastname'], 'Email' => $lead['email'], 'Phone' => $lead['phone'], 'leadsource' => $lead['leadsource'], 'address' => $lead['address'], 'pincode' => $lead['pincode'], 'Grade' => $lead['grade'], 'utmcampaign' => $lead['utmcampaign'], 'utmcontent' => $lead['utmcontent'], 'utmmedium' => $lead['utmmedium'], 'utmterm' => $lead['utmterm'] ] ] ];
- 第二步:将数组转为合法JSON字符串
如果请求参数包含中文,可添加JSON_UNESCAPED_UNICODE参数避免中文被转义:
$postJson = json_encode($requestData, JSON_UNESCAPED_UNICODE);
- 第三步:替换CURL配置中的POST字段
把原Postman导出代码里的硬编码字符串替换为上面生成的$postJson变量即可:
CURLOPT_POSTFIELDS => $postJson,
备用方案:直接在字符串中嵌入变量(不推荐)
如果坚持要直接修改原字符串,注意PHP双引号支持解析变量,需要把外层的单引号换成双引号,内部的双引号用反斜杠转义,变量用大括号包裹避免解析异常:
CURLOPT_POSTFIELDS => "{\"datalist\":[{\"Firstname\":\"{$lead['name']}\",\"Lastname\":\"{$lead['lastname']}\",\"Email\":\"{$lead['email']}\",\"Phone\":\"{$lead['phone']}\",\"leadsource\":\"Website\",\"address\":\"lakeview\",\"pincode\":\"440010\",\"Grade\":\"Class 1\",\"utmcampaign\":\"summer_sale\",\"utmcontent\":\"video_ad\",\"utmmedium\":\"organic_social\",\"utmterm\":\"social_media\"}]}",
注意:原Postman导出的JSON末尾多了冗余逗号,属于非法JSON格式,手动修改时需要删除,用数组转JSON的方案会自动处理该问题。
内容的提问来源于stack exchange,提问作者Prateek Madan
相关产品推荐
相关产品推荐

