在PHP中搜索查询功能

时间:2012-08-04 18:00:22

标签: php facebook string api

我遇到了一些障碍。我正忙着为我的社交网络隐私认知网站构建搜索功能。搜索将查询Facebook Graph API,因为你可以使用https://graph.facebook.com/search?q=i讨厌我的老板& type = post& limit = 100& locale = en_GB我的问题是我想在查询周围加上引号所以当用户输入时进入文本字段并点击搜索按钮,php代码执行其余操作并查询API,但同时将查询它https://graph.facebook.com/search?q=“我讨厌我的老板”。

问题是我该怎么做?我的代码只是部分保持它的位置:

$str = $_REQUEST['query'];
$str = urlencode($str);
$fbquery = "https://graph.facebook.com/search?q={$str}&type=post&limit=100&locale=en_GB";

显然我在问我在哪里或如何把引号放在那里?

任何可以帮助我的人我都非常感激!我尝试过其他的事情:

$str = '".$str."';

$str = '"$q"';

但没有一个有效。请帮忙!

提前致谢: - )

4 个答案:

答案 0 :(得分:1)

由于您是通过网址中的GET传递查询字符串,因此您需要先对查询进行编码,然后再将其传递到网址中。

php urlencode函数执行此操作。

所以代替:

y = "https://graph.facebook.com/search?q={$str}";

你需要

$encoded_str = urlencode($str);
y = "https://graph.facebook.com/search?q={$encoded_str}";

示例:

  

https://graph.facebook.com/search?q=good葡萄酒

VS

  

https://graph.facebook.com/search?q=good%20wine

在第二个示例中,被翻译为%20

答案 1 :(得分:1)

试试这个。这很简单。

$ str ='“'。$ str。'”';

答案 2 :(得分:0)

我认为在urlencode 之前添加引号应该有效。还要考虑使用http_build_query函数,它应该为您提供有效的查询字符串结果,并且更具可读性。

$params = http_build_query(array(
    'q' => '"'.$str.'"',
    'type' => 'post',
    'limit' => 1000,
    'local' => 'en_GB',
));

print 'https://graph.facebook.com/search?'.$params;

在我的测试中,添加引号不会改变结果,从Facebook强制返回。

答案 3 :(得分:-1)

这个怎么样:

$fbquery = "https://graph.facebook.com/search?q=\"{$str}\"&type=post&limit=100&locale=en_GB";