我在网上找到了一种在 iPhone 上查看 Ruby on Rails 应用程序时分离视图的方法,它会解析用户代理来检测这一点。我专门针对 iOS 4.2+,因为以前的版本不支持我的应用程序所需的 HTML5 Web Sockets。
到目前为止我正在解析/(iPhone.+OS.+4_2.+Safari)/
它似乎很有效,但我遇到的问题是,如果您使用的是测试版或未来版本的操作系统,用户代理可能不包括4_2
但它可能支持 Web Sockets。
我的问题是..我如何解析字符串以获得以下结果:
我的正则表达式很糟糕,所以请原谅这个愚蠢的问题:-)
先谢谢了!
汤姆.
实际上不可能“可靠地”解析用户代理字符串;几个常见的用户代理字符串违反了 HTTP 1.1(我忘记了 RFC 编号)WRT 括号之间允许的字符(. 或 / 或 ; 或其他什么?)。当您想要将某些功能列入“白名单”时,用户代理嗅探非常脆弱,并会导致抱怨某些浏览器相对于其他浏览器的优惠待遇(特别是当微软这样做时),并且意味着有人必须保持巨大的正则表达式更新。
是否真的没有更好的方法(例如使用 JavaScript?)来检测浏览器支持的功能?
不过,你可以做类似的事情; *CPU +iPhone +OS +(4_(2|[3-9]|\d\d)|[5-9]|\d\d)\[0-9a-zA-Z_]* +like +Mac +OS +X *;
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)