0

我无法使用Zend_Gdata_Calendar完全匹配的词组返回 Google 日历事件的子集。

参考指南Zend_Gdata_Books,在该部分setQuery()中,建议使用 Zend 应该可以做到这一点:

请注意,参数值中的任何空格、引号或其他标点符号都必须经过 URL 转义(使用加号 (+) 表示空格)。要搜索确切的短语,请将短语括在引号中。例如,要搜索与短语“间谍飞机”匹配的书籍,请将q参数设置为%22spy+plane%22

据我所知,Zend_Gdata_BooksZend_Gdata_Calendar扩展相同的setQuery()功能,所以我认为它们在 Zend 端是等价的。

至于谷歌,日历查询参数参考说日历 API 支持标准数据 API 查询参数,这反过来又说全文查询字符串q支持不区分大小写的精确短语搜索,正如Zend_Gdata_Books所示。

我已经尝试了所有这些方法:

$gCal = new Zend_Gdata_Calendar();
$query = $gCal->newEventQuery();

$query->setQuery("%22event+text%22"); //no results
$query->setQuery("%22event%20text%22"); //no results
$query->setQuery("\"event text\""); //too many results
$query->setQuery('"event text"'); //too many results
$query->setQuery("event text"); //too many results

我意识到前两个不起作用,因为字符串被双重 URL 编码。在后一种情况下,我得到了我想要的事件,但也得到了我不想要的事件,包括“事件”或“文本”。

会不会是 Google 为 Calendar API 实现了不同的全文查询?我可能会做什么样的愚蠢的事情来打破它?

4

1 回答 1

0

看起来你想试试它$query->setQuery('"event text"');
产生查询字符串Query string(19) "?q=%22event+text%22"
where$query->setQuery("event text");
产生查询字符串Query string(13) "?q=event+text"

我用了 :

$gCal = new Zend_Gdata_Calendar();
        $query = $gCal->newEventQuery();
        $query->setQuery("event text");
        Zend_Debug::dump($query->getQueryString(), 'Query');

去测试。

于 2012-08-19T07:25:58.643 回答