http_build_query()无法检索所需的查询,PHP

时间:2013-07-08 14:31:41

标签: php forms

我正在使用Bing Search API: 这是代码:

<?php
if (isset($_GET['keyword'])) {
$keyword = $_GET['keyword'];
} else {
  echo 'Wrong!';
}
$key = 'NNNNN'; //key for API
$root = 'https://api.datamarket.azure.com/Bing/Search/';
$search = $root . 'Web?$format=json&Query=';
$req = $search . '\'' . $keyword . '\'';
$ch = curl_init($req);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $key . ":" . $key);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$resp = curl_exec($ch);
$json = json_decode($resp);
foreach ($json->d->results as $item) {
$rss_item = array(
    'Title' => $item->Title,
    'Description' => $item->Description,
    'DisplayUrl' => $item->DisplayUrl,
    'Url' => $item->Url,
);
array_push($desArray, $item->Description);
array_push($rss_array, $rss_item);
}
for ($i = 0; $i < 50; $i++) {
    echo '<p class="bagi">' . '<a href="' . $rss_array[$i]['Url'] . '">' . $rss_array[$i]['Title'] . '</a>
        <a href="' . $rss_array [$i]['Url'] . '" target="_blank">' . '<img src="'.base_url().'TAMPILAN/images/open_new_tab.jpg" width="10px" height="10px" title="Open in new tab"></a>
            <br/>' .
    $rss_array [$i]['Description'] . '</br>' .
    '<hr/>' .
    '</p>';
}
?>

我在浏览器上输入:

http://localhost/MSP/SignIn/cariBing.php?keyword=statistics

但它给了我搜索结果列表50个项目,完成没有错误,但是当我使用时:

http://localhost/MSP/SignIn/cariBing.php?keyword=statistical+terms

它反复给了我Trying to get property of non-objectundefined offset。然后我意识到问题出在查询(关键字)上。代码无法处理其中包含空格的关键字。所以我尝试了这个:

if (isset($_GET['keyword'])) {
$queryString = array();
foreach ($_GET as $keyword => $value) {
    $queryString[] = $keyword .'='. $value;
}
$queryString = http_build_query($queryString, $keyword);
} else {
echo 'Wrong!';
}

我用http://localhost/MSP/SignIn/cariBing.php?keyword=statistical+terms测试了它 它给了我结果,但结果是指查询“关键字”,而不是我想要的“统计术语”,或者我输入的任何内容。 我在哪里想念?非常感谢提前。

1 个答案:

答案 0 :(得分:0)

我认为你的意思是

$queryString = http_build_query(array("keyword"=>$_GET["keyword"]));

或者如果你想要所有的$ _GET参数

$queryString = http_build_query($_GET);

替换您的上一个代码段应为

if (isset($_GET['keyword'])) {
    $queryString = http_build_query($_GET);
} else {
    echo 'Wrong!';
}