0

我有一系列丑陋、复杂的 URL 字符串,我想将人们输入的特定搜索词(例如“示例”)从http://google.com/search/things/q="example".

偶尔会有一个带有+分隔词的搜索,并且在用户指定的查询末尾是一个&.

我不知道从哪里开始,即使经过大量的谷歌搜索。任何让我开始的帮助将不胜感激!

4

3 回答 3

5
CGI.parse(URI.parse(url).query)

例子:

>> CGI.parse(URI.parse("http://google.com/?foo=bar&baz=hello").query)
=> {"foo"=>["bar"], "baz"=>["hello"]}

当然,请记住要求cgiuri首先。

于 2012-07-18T21:26:29.957 回答
0

Addressable::URI gem 和 Ruby 自己的URI模块都可以做你想做的事,或者你可以很容易地自己动手。

Addressable::URI 非常强大并且符合URI规范。以下是 PRY 内部的使用示例:

[9] (pry) main: 0> uri = Addressable::URI.parse('http://google.com/search/things?q="example"')
=> #<Addressable::URI:0x80ec33a0 URI:http://google.com/search/things?q="example">
[10] (pry) main: 0> uri.query
=> "q=\"example\""
[11] (pry) main: 0> uri.query_values
=> {"q"=>"\"example\""}

特别有用的是query_values返回哈希的方法。

你可以很容易地写出同样的东西:

Hash['http://google.com/search/things?q="example"'.split('?').last.split('&').map{ |q| q.split('=') }]
=> {"q"=>"\"example\""}

Addressable::URI 和 URI 的优点是它们提供了许多其他功能来操作 URL,而您不必这样做。

于 2012-07-18T21:56:12.633 回答
0

你可能想要这样的东西: http: //codefol.io/posts/9-How-Does-Rack-Parse-Query-Params-With-parse-nested-query

如果您使用的是基于 Rack 的框架(如 Sinatra 或 Rails),那么您已经免费获得了它。

于 2012-07-18T21:24:32.040 回答