使用PHP使用post变量对json结果进行Curl

使用PHP使用post变量对json结果进行Curl,php,arrays,json,curl,Php,Arrays,Json,Curl,我已经制作了一个CURL脚本,它将一些参数发布到我的另一个站点,用JSON搜索并显示结果 curl "http://xx.xx.xx.xx:9080/crawl.json?spider_name=friendsearch" -d '{"request": {"url":"https://www.example.com/results?name=Robert%20June&citystatezip=Seattle,WA","callback":"parse"},"spider_name":

我已经制作了一个CURL脚本,它将一些参数发布到我的另一个站点,用JSON搜索并显示结果

curl "http://xx.xx.xx.xx:9080/crawl.json?spider_name=friendsearch" -d '{"request": {"url":"https://www.example.com/results?name=Robert%20June&citystatezip=Seattle,WA","callback":"parse"},"spider_name": "friendsearch"}'
它工作得很好,给我一个JSON数组,比如

{"status": "ok", "items": [{"fullname": ["Robert June"], "current_street": "Address, WA 00000", "previous_addresses": ["Address1", "Address2", "Address3", "Address4", "Address5"], "cellphones": ["(000) 000-0001", "(000) 000-0002"], "landlines": ["(000) 000-0001", "(000) 000-0002"], "emails": ["xxx@xxx.com", "xxx@xxx.com"], "url": "https://www.example.com/results?name=Robert%20June&citystatezip=Seattle%2CWA&rid=0x0"}], "items_dropped": [], "stats": {"crawlera/delay/reset_backoff": 3, "crawlera/request": 3, "crawlera/request/method/GET": 3, "crawlera/response": 3, "crawlera/response/banned": 1, "crawlera/response/error": 1, "crawlera/response/error/banned": 1, "crawlera/response/status/200": 2, "crawlera/response/status/503": 1, "downloader/request_bytes": 1481, "downloader/request_count": 3, "downloader/request_method_count/GET": 3, "downloader/response_bytes": 16123, "downloader/response_count": 3, "downloader/response_status_count/200": 2, "downloader/response_status_count/503": 1, "elapsed_time_seconds": 68.329858, "finish_reason": "finished", "finish_time": "2020-05-06 22:18:18", "item_scraped_count": 1, "log_count/DEBUG": 4, "log_count/INFO": 12, "memusage/max": 59998208, "memusage/startup": 59998208, "request_depth_max": 1, "response_received_count": 2, "retry/count": 1, "retry/reason_count/503 Service Unavailable": 1, "scheduler/dequeued": 3, "scheduler/dequeued/memory": 3, "scheduler/enqueued": 3, "scheduler/enqueued/memory": 3, "start_time": "2020-05-06 22:17:09"}, "spider_name": "friendsearch"}
我的目标是通过PHP调用这个curl脚本,并在网页上获得结果,提取姓名、地址、以前的地址、电话和固定电话。我尝试了多种方法,并调用curl-like-on,但未能获得结果,结果失败

我试过了

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://xx.xx.xx.xx:9080/crawl.json?spider_name=friendsearch');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"request\": {\"url\":\"https://www.example.com/results?name=Robert%20June&citystatezip=Seattle,WA\",\"callback\":\"parse\"},\"spider_name\": \"friendsearch\"}");

$headers = array();
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);
但它给

array(3) { ["status"]=> string(5) "error" ["message"]=> string(117) "Invalid JSON in POST body. 1:33: Error: Unexpected text after end of JSON value | At line 1, column 33, offset 33" ["code"]=> int(400) }

有什么想法吗?

这应该可以满足您的需要:

<?php
    $json = json_decode(shell_exec("curl 'http://xx.xx.xx.xx:9080/crawl.json?spider_name=friendsearch' -d '{\"request\": {\"url\": \"https://www.example.com/results?name=Robert%20June&citystatezip=Seattle,WA\",\"callback\": \"parse\"},\"spider_name\": \"friendsearch\"}'") , true);
    var_dump($json);
?>
如何回显姓名、地址等:

if ($json['status'] === 'ok') {

    $name = $json[items][0]['fullname'][0];                // 'Robert June',
    $currentstreet = $json[items][0]['current_street'];    // 'Address, WA 00000'
    $address1 = $json[items][0]['previous_addresses'][0];  // Address1
    $address2 = $json[items][0]['previous_addresses'][1];  // Address2

    echo "Name: ".$name."<br />\nCurrent Street: ".$currentstreet."<br />\nAddress1: ".$address1."<br />\nAddress2: ".$address2."<br />\n";

// Can also do:

    echo "Name: $name<br />\nCurreny Street: $currentstreet<br />\nAddress1: $address1<br />\nAddress2: $address2<br />\n";

}
if($json['status']='ok'){
$name=$json[items][0]['fullname'][0];//'Robert June',
$currentstreet=$json[items][0]['current_street'];/'地址,WA00000'
$address1=$json[items][0]['previous_addresses'][0];//地址1
$address2=$json[items][0]['previous_addresses'][1];//地址2
echo“Name:.$Name.”
\n当前街道:.$currentstreet.
\nAddress1:.$address1.
\nAddress2:.$address2.
\n; //您还可以: echo“Name:$Name
\n curreny Street:$currentstreet
\n地址1:$address1
\n地址2:$address2
\n”; }
您能在php脚本中发布您尝试的内容吗?谢谢。我只是用我尝试过的方法编辑了我的问题。谢谢,但它仍然给我“数组(3){[“状态”]=>string(5)”错误“[“消息”]=>string(131)”帖子正文中的JSON无效。1:0:error:Unknown numeric value关键字:“cdf7af14bdeb”|在第1行第0列,偏移量0(开始时)”[“代码”=>int(400)}@Hashmi您缺少一些空格,我添加了它们,请检查。@Hashmi非常欢迎,我添加了一些示例,以便您了解如何回显名称。非常欢迎您。我知道很难找到一个好的自由职业者。如果他很好,那么他可能已经忙于很多项目了。在stackoverflow,你可以问任何关于编程的问题,而且总是免费和快速的。在stackoverflow,您可以在此处雇用/提供工作给用户:请在此处查看如何提供。我还建议您使用谷歌学习编程,并在此处提问,这样您将了解您的程序员有多优秀,即使程序员离开您,您也可以继续您的项目。我也有同样的问题,请检查我的问题:
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"request": {"url": "https://www.example.com/results?name=Robert%20June&citystatezip=Seattle,WA", "callback": "parse"}, "spider_name": "friendsearch"}');
if ($json['status'] === 'ok') {

    $name = $json[items][0]['fullname'][0];                // 'Robert June',
    $currentstreet = $json[items][0]['current_street'];    // 'Address, WA 00000'
    $address1 = $json[items][0]['previous_addresses'][0];  // Address1
    $address2 = $json[items][0]['previous_addresses'][1];  // Address2

    echo "Name: ".$name."<br />\nCurrent Street: ".$currentstreet."<br />\nAddress1: ".$address1."<br />\nAddress2: ".$address2."<br />\n";

// Can also do:

    echo "Name: $name<br />\nCurreny Street: $currentstreet<br />\nAddress1: $address1<br />\nAddress2: $address2<br />\n";

}