值得注意的是,您必须小心逃脱。我试过这个并没有得到任何快乐。我尝试了许多组合:
$query->setSpreadsheetQuery("name=\"Andrew John\"");
但无济于事。通过 HTTP 检查器运行流量(并将 Zend HTTP 客户端设置为通过代理运行是另一件值得关注的事情!)我可以看到从这项工作生成的 URL 如下所示:
http://spreadsheets.google.com:80/feeds/list/spreadsheetkey/od6/private/full?sq=name%3D%5C%22Andrew+John%5C%22
这导致了 Invalid Token (Status 400) 错误。它不喜欢 %5C%22 (\") 转义序列,但它是从哪里得到的?!
事实证明,Zends 代码中嵌入了一个“parse_str”,它在查询字符串中添加了斜杠,因为出于某种原因(Ubuntu 默认 php 配置?)magic_quotes_gpc 在 php.ini 文件中设置为 On。
关闭此功能允许生成的 URL 恢复为:
http://spreadsheets.google.com:80/feeds/list/spreadsheetkey/od6/private/full?sq=name%3D%22Andrew+John%22
一切都开始工作了。
顺便说一句,我不得不求助于通过 HTTP Inspector 运行它,因为这样做:
echo $query->getQueryUrl();
错误地报告它正在发送上面的字符串,每个引号之前没有 %5C!只是表明,相信你的代码告诉你的东西永远不会有回报......
因此,如果您在 Zend 框架的 Gdata 类中遇到结构化查询问题并且仅添加引号并不能为您解决问题,请快速查看是否已将 magic_quotes_gpc 设置为 On!