如何使用PHP将多个Import.io搜索引擎连接器合并为一个搜索引擎?

4

我有一些来自数据提取工具/网站(http://import.io)的PHP API代码块,如下所示。 我想要一个搜索框,可以返回不止一个,而是多个这些“连接器”代码块的结果(它们被称为连接器,因为它们将您的搜索查询与通过import.io传输的结果连接起来)。

我是PHP的新手,所以不确定该怎么做。

<?php

$userGuid = "kjnjkn-32d2-4b1c-a9c5-erferferferferf";
$apiKey = "APIKEY";

function query($connectorGuid, $input, $userGuid, $apiKey) {

  $url = "https://api.import.io/store/connector/" . $connectorGuid . "/_query?_user=" . urlencode($userGuid) . "&_apikey=" . urlencode($apiKey);

  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
  curl_setopt($ch, CURLOPT_POSTFIELDS,  json_encode(array("input" => $input)));
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  $result = curl_exec($ch);
  curl_close($ch);

  return json_decode($result);
}

// Query for tile WEBSEARCH
$result = query("98c9bac2-e623-4e31-8a3e-erferferferf", array(
  "search_query" => "term1",
), $userGuid, $apiKey);
var_dump($result);

// Query for tile WEBSEARCH
$result = query("98c9bac2-e623-4e31-8a3e-bferfreferfe", array(
  "search_query" => "term2",
), $userGuid, $apiKey);
var_dump($result);

取决于API是否允许在一个API调用中接受多个关键字。不过我还没有阅读该API。 - Raptor
谢谢,但我的问题更多地涉及搜索框方面...您能给我一个示例,即使只有一个查询/连接器也可以吗? - Ragnar Danneskjöld
1个回答

5

我认为你首先需要的是一种HTML表单,可以将数据POST到你的PHP脚本。虽然我没有测试过,但类似下面这样的代码应该可以实现:

<form action="path/to/myscript.php" method="POST">
    <input type="text" name="search" placeholder="query">
    <input type="submit" value="Search">
</form>

这将向您的脚本发出HTTP POST请求(将其命名为myscript.php或更改HTML以匹配您的文件名),并使用$_POST数据数组中的输入项进行请求。
这意味着您可以使用$_POST["search"]获取键入的搜索词,并将其用作查询的输入:
$result = query("98c9bac2-e623-4e31-8a3e-erferferferf", array(
  "search_query" => $_POST["search"],
), $userGuid, $apiKey);
var_dump($result);

注意事项:

  • 此处没有任何验证 - 如果您将其用于生产环境中,则需要对表单输入进行清理
  • PHP网站上有一份有趣的指南,内容类似。
  • 如果您要执行更复杂的操作,几乎肯定最好使用其他语言的完整客户端库,而不是PHP - 有更多选项在此页面上列出
  • 全面披露,我为import.io工作(希望这有所帮助!)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接