仅使用PHP检测IE兼容模式

rub*_*o77 1 php internet-explorer-10

是否有可能从使用PHP的PHP中检测到IE处于兼容模式?

我使用IE10并拥有useragent

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Run Code Online (Sandbox Code Playgroud)

因此它显示为Internet Explorer 7.

当然,仅依靠PHP的这种检测是一个坏主意,但它对某些情况非常有用(例如使用PHP或调试提示进行日志记录,......)

STT*_*LCU 5

从这个资源:http://msdn.microsoft.com/en-us/library/ie/hh869301(v = vs.85).aspx

要在兼容模式而不是常规IE 7中检测IE 10,您应该查看Trident/6.0标识IE 10 的令牌而不管模式如何.

要从PHP中检测它,请从标头中获取用户代理并解析它以获取Trident/6.0字符串标记.

您可以从Trident令牌识别更多版本的Internet Explorer:IE9具有Trident/5.0IE 8 Trident/4.0,IE 7在其用户代理中没有Trident.

可以在以下位置找到用户代理字符串$_SERVER['HTTP_USER_AGENT'].从那里搜索内部的子字符串或使用正则表达式是微不足道的.

IE10用户代理参考:

  • 正常模式: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
  • 兼容模式: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Trident/6.0)

请注意,MSIE令牌不同,但Trident令牌是相同的.这表示用户已启用兼容模式.