【问题标题】:search query via http using JSON使用 JSON 通过 http 搜索查询
【发布时间】:2014-07-27 16:32:24
【问题描述】:

我正在发送 API 请求并希望在 URL 中提交搜索词:

$query="My Query";
$query_encode= urlencode($query);

$url_json="API_URL".$query_encode
$json = file_get_contents($url_json);

我想要做的是“我的查询”应该包含一个更复杂的术语,例如:

"word1 word2" (word3 OR word4) AND word5

我的问题是我想从与“word1 word2”完全匹配的 API(数据库)中获取结果,所以我需要以某种方式通过 http 发送引号。

有人知道我需要如何设置“我的查询”的内容,包括发送带有短语的查询所需的引号,而不仅仅是单词

$query="My Query";

【问题讨论】:

  • 不明白你的意思,你能解释一下吗?
  • 就像你使用谷歌时一样。当您搜索 word1 word2 时,您会得到文本包含 word1 word2 的结果但我正在搜索文本中包含“word1 word2”(此短语)的部分。因此我需要通过http以某种方式发送引号,但首先我需要定义我的变量$query。我应该如何声明该变量 $query
  • 有什么问题?你能产生什么代码吗? urlencode 应该用“+”号替换空格,我认为这就是你想要的,那么问题是什么?
  • 问题是引号(我刚刚编辑了问题)因为我需要查询短语,而不仅仅是单词

标签: php json api


【解决方案1】:

如果您想发送报价,请将其包含在您的查询中。

您在 PHP 中的引号内设置了一个字符串值。因此,您现在拥有的不是要在请求中发送的附加引号,而是将由 PHP 解析和删除的引号。

你应该这样做:

$query='"My Query"';

这将导致类似%22My+Query%22

稍后对它进行 urldecode 以将 "My Query" 作为字符串值返回。

【讨论】:

    【解决方案2】:

    在字符串中加上引号。 urlencode() 将负责正确编码它们。此外,您需要在 URL 和查询参数之间使用?,并且您可能需要为参数提供一个名称(我假设它在下面的代码中命名为 query,您需要从API 规范)。

    $query = '"word1 word2"';
    $query_encode = urlencode($query);
    $url_json = "API_URL?query=$query_encode";
    $json = file_get_contents($url_json);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-26
      • 1970-01-01
      • 1970-01-01
      • 2012-09-26
      • 2018-09-11
      • 1970-01-01
      相关资源
      最近更新 更多