【问题标题】:How to get a specific value from url in ruby on rails [duplicate]如何从 ruby​​ on rails 中的 url 获取特定值 [重复]
【发布时间】:2014-10-24 19:15:41
【问题描述】:

我正在尝试从此网址获取“令牌”的值

token=EC-6HV41821M6960550G

url = "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-6HV41821M6960550G"

我知道它可以通过正则表达式来完成,但我认为它可以通过一些 URI 方法来完成。

【问题讨论】:

  • 我试图让它变粗:-) 删除它
  • 查看URI 类。你不能一步完成。你必须结合几个。

标签: ruby-on-rails ruby uri


【解决方案1】:

可以这样得到:

require 'uri'

url = "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-xxx"

uri    = URI.parse(url)
params = CGI::parse(uri.query)

params['token'] # => 'EC-xxx'

【讨论】:

  • 感谢它真的有效!你从很多正则表达式中救了我..
【解决方案2】:

只是为了说明,还有一些其他的方式:-

#!/usr/bin/env ruby

require 'uri'

url = "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-xxx"
uri = URI(url)
URI.decode_www_form(uri.query).to_h['token']
# => "EC-xxx"

阅读方法::decode_www_form文档。

【讨论】:

    【解决方案3】:
    require 'cgi'
    
    url = 'https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-6HV41821M6960550G'
    
    CGI.parse(url)['token']
    

    【讨论】:

    • +1 短版...
    • -1 仅适用于 token 参数,但对于 cmd 无效。
    • 是的,因为CGI.parse 只与查询一起工作,并像用&= 拆分一样解析它,所以你将拥有cmd 参数而不是cmd 参数跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 2023-03-04
    • 1970-01-01
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    相关资源
    最近更新 更多