Php “的用户代理字符串”;[浏览器版本]及更高版本;

Php “的用户代理字符串”;[浏览器版本]及更高版本;,php,http,user-agent,Php,Http,User Agent,我试图通过指定如果HTTP\u USER\u AGENT字符串对应于[browser version x]或更高版本,则应加载包含CSS动画的远程样式表来避免大量PHP代码。例如,知道Chrome 19及更新版本支持CSS动画,代码将检测Chrome版本是否大于19,并加载相应的样式表。 这在使用PHP时是可行的吗?这是一种解决方案,但您必须不时更新用户代理字符串的解析器,以包含其中的更改。 没有约定的使用代理字符串的标准,因此一般来说解析用户代理字符串相当困难,通常归结为查找表 一种更适合未来

我试图通过指定如果
HTTP\u USER\u AGENT
字符串对应于[browser version x]或更高版本,则应加载包含CSS动画的远程样式表来避免大量PHP代码。例如,知道Chrome 19及更新版本支持CSS动画,代码将检测Chrome版本是否大于19,并加载相应的样式表。

这在使用PHP时是可行的吗?

这是一种解决方案,但您必须不时更新用户代理字符串的解析器,以包含其中的更改。 没有约定的使用代理字符串的标准,因此一般来说解析用户代理字符串相当困难,通常归结为查找表


一种更适合未来的方法是在客户端使用检测CSS动画的支持,例如,然后根据结果加载样式表。这样,如果某些浏览器开发人员将来想更改用户代理字符串(结构),您就不必在意了。

这是一种解决方案,但您必须不时更新用户代理字符串的解析器,以便在其中包含更改。 没有约定的使用代理字符串的标准,因此一般来说解析用户代理字符串相当困难,通常归结为查找表


一种更适合未来的方法是在客户端使用检测CSS动画的支持,例如,然后根据结果加载样式表。如果某些浏览器开发人员想在将来更改用户代理字符串的结构,那么你不必在意。

< P>你可能希望考虑使用设备描述库(DDR)。这是一个应用程序或Web服务,您可以传入用户代理字符串并获取该用户代理的已知功能列表

这样做的好处是,随着新用户代理的出现,您不必不断更新自己的代码

我最近在北京读到了有关DDR的文章。他对解除武装、复员和重返社会的能力和性质有出色的评论

我知道您正在使用PHP,但是连接/查询DDR应该是独立于语言的


只是一个想法,希望这有帮助

>您可能希望考虑使用设备描述库(DDR)。这是一个应用程序或Web服务,您可以传入用户代理字符串并获取该用户代理的已知功能列表

这样做的好处是,随着新用户代理的出现,您不必不断更新自己的代码

我最近在北京读到了有关DDR的文章。他对解除武装、复员和重返社会的能力和性质有出色的评论

我知道您正在使用PHP,但是连接/查询DDR应该是独立于语言的

只是一个想法,希望这有帮助

如果您必须使用PHP来实现这一点,那么有一个内置函数可以满足您的需要

然而。。。如果您使用
get\u browser()
,请注意这是解决问题的糟糕方法

为了使用此功能,您必须有一个最新的
browsecap.ini
文件,它基本上是一个文本文件,定义了每个浏览器和曾经发布过的每个版本的功能

这样做的缺点显而易见:

  • 首先,您必须找到并安装browsecap.ini的最新副本
  • 每次发布新浏览器时,您都必须对其进行更新(而且新版本不断出现,所以这是一项相当大的任务)
  • 它可能不包括您想要检测的所有功能
  • 如果用户屏蔽其用户代理字符串,则会中断
出于所有这些原因,我强烈建议不要使用
get\u browser()
,或者任何基于PHP或服务器端的解决方案

相反,正如其他人所说,您应该调查使用该库。这是一个安装在站点上的Javascript库,可以在浏览器中进行功能检测。它永远不会过时,因为它专门关注功能是否受支持,所以它不关心实际的浏览器是什么。

如果必须使用PHP来实现这一点,那么有一个内置函数可以满足您的需要

然而。。。如果您使用
get\u browser()
,请注意这是解决问题的糟糕方法

为了使用此功能,您必须有一个最新的
browsecap.ini
文件,它基本上是一个文本文件,定义了每个浏览器和曾经发布过的每个版本的功能

这样做的缺点显而易见:

  • 首先,您必须找到并安装browsecap.ini的最新副本
  • 每次发布新浏览器时,您都必须对其进行更新(而且新版本不断出现,所以这是一项相当大的任务)
  • 它可能不包括您想要检测的所有功能
  • 如果用户屏蔽其用户代理字符串,则会中断
出于所有这些原因,我强烈建议不要使用
get\u browser()
,或者任何基于PHP或服务器端的解决方案


相反,正如其他人所说,您应该调查使用该库。这是一个安装在站点上的Javascript库,可以在浏览器中进行功能检测。它永远不会过时,因为它特别关注功能是否受支持,所以它不关心实际的浏览器是什么。

+1我不确定css动画与大量php代码的关系,但Modernizer.load绝对是一条出路:+1。使用现代化工具。这是迄今为止解决您问题的最佳解决方案。+1我不确定css动画与大量php代码之间的关系,但Modernizer.load绝对是一条出路:+1。使用现代化工具。这是迄今为止解决您问题的最佳解决方案。大量php代码与包含动画的css文件有什么关系?这可能会影响答案。诚然,我本可以说得更清楚。
我在这方面的经验不是很丰富