-2

我遇到了一些障碍。我正忙于为我的社交网络隐私意识网站构建搜索功能。搜索将查询 Facebook Graph API,您可以使用https://graph.facebook.com/search?q=i hat my boss&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

4 回答 4

1

由于您在 url 中通过 GET 传递查询字符串,因此在将查询传递到 url 之前,您应该需要对查询进行编码。

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=好酒

对比

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

在第二个例子中, 被翻译成%20

于 2012-08-04T18:07:43.523 回答
1

尝试这个。这很简单。

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

于 2012-08-04T18:10:20.770 回答
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 艰难返回的结果。

于 2012-08-04T18:08:28.617 回答
-1

这个怎么样:

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

于 2012-08-04T18:07:10.803 回答