Mar*_*ley 11 ruby regex parsing ruby-on-rails
可能重复:
用于从URL字符串中提取主机的Ruby代码
我发现这个名为URI的模块可以解析url.(我对ruby很新.在这种情况下,'module'是'library'的同义词吗?)然后你可以提取主机名.
uri = URI.parse("http://www.ruby-lang.org/")
...
p uri.host
# => "www.ruby-lang.org"
Run Code Online (Sandbox Code Playgroud)
从这个,我想你可以删除'www.' 并使用正则表达式保留其他子域.
有没有人有更直接的选择,或者这种方法是否正确?
因此,在发布我自己的答案时,我并不是说像domainatrix或public_suffix_server这样的宝石并不是优雅的解决方案(虽然后者立即对我造成了影响,导致我走这条路).
人们建议使用split()让我意识到我可以解析'www'.如果它存在并以其他方式离开域而不安装gem并使用一行简单的代码:
url = request.original_url
domain = URI.parse(url).host.sub(/\Awww\./, '')
Run Code Online (Sandbox Code Playgroud)
这适用于子域和多部分后缀(例如co.uk).有人看到这个有什么问题吗?
编辑:谢谢sorens指出我最初使用的弱正则表达式.这个表达肯定更好.