PHP调用Elasticsearch API时字符串变量解析问题求助
PHP构造Elasticsearch查询体时解析变量的解决方案
以下几种方案可以解决你遇到的变量无法解析的问题:
- 转义双引号,使用双引号包裹字符串
PHP中双引号包裹的字符串会自动解析内部变量,只需将Elasticsearch查询语法中的双引号用反斜杠转义即可:
$nameCategoryListSub = "Laptop"; $body = "{ \"query\" : { \"match\": { \"category\": \"$nameCategoryListSub\" } } }";
- 字符串拼接
将查询字符串拆分为多段,通过.运算符把变量插入到对应位置,这种方式不用大量转义引号:
$nameCategoryListSub = "Laptop"; $body = '{ "query" : { "match": { "category": "' . $nameCategoryListSub . '" } } }';
- 用数组构造后转JSON(推荐)
直接用PHP数组构建查询结构,再通过json_encode()转换为JSON字符串,这是最稳妥的方式,既不用处理引号冲突,也能避免手动写JSON的语法错误:
$nameCategoryListSub = "Laptop"; $bodyArray = [ 'query' => [ 'match' => [ 'category' => $nameCategoryListSub ] ] ]; $body = json_encode($bodyArray); // 如果需要格式化输出的JSON,可添加JSON_PRETTY_PRINT参数 // $body = json_encode($bodyArray, JSON_PRETTY_PRINT);
内容的提问来源于stack exchange,提问作者Meikel Rizky Hartawan
相关产品推荐
相关产品推荐

