代码片段 → PHP → PHP IE 检测 PHP IE 检测 Chris Coyier 于 2009 年 8 月 22 日 if ( eregi("MSIE", getenv( "HTTP_USER_AGENT" ) ) || eregi("Internet Explorer", getenv("HTTP_USER_AGENT" ) ) ) { // do something }
有一个简单的问题,也许很愚蠢。我需要检测所有低于 8 版本的 IE 版本。这可以通过检查 IE 6/7 来完成,还是有更简单的方法?
浏览器在头部文件中发送其 ID;我不确定 IE 8 是否发送任何与以前版本不同的内容,但如果你查看它与其他版本的头部文件,你可能会找到一个可用的文本字符串。
编写一个脚本,它回显 HTTP_USER_AGENT,找到一些拥有早期版本的人,让他们发送结果给你,看看是否有任何文本字符串符合要求。
请记住,你可能还希望区分 IEPC 和 IEMac。
我曾经使用过一个带有几个浏览器选项的 switch 语句,比如这个片段,并将不同的 CSS 样式表提供给输出,具体取决于哪个浏览器请求页面。但是,我没有区分版本。
重要提示:一些非 IE 浏览器包含 MSIE 子字符串。即 Opera。
请注意,POSIX 正则表达式函数(例如
eregi
)自 PHP 5.3.0 起已弃用。以下是使用preg_match
的版本感谢 Geert,你的解决方案非常有效。
这适用于 Windows Mobile 7 吗?谢谢
它对我来说不起作用,即使是 PHP5 版本(来自 Geert)。:(
我使用它来检测移动浏览器,我希望同一个 php 文件检测是否为 IE,然后将 IE 用户重定向到我网站上的一个目录。
有人可以帮我吗?我对 PHP 不太了解。:\
哦,请忘记我之前的评论。我已经搞定了。
感谢 **CSS-Tricks** 和 **Geert**!
+1 给 Geert!节省了我几个小时的搜索!谢谢
Kevin 和 Geert - 解决方案是什么?我本来想尝试一下代码,但看起来显示的代码不正确,而且没有向读者解释修正。你们有没有机会说明一下?我正在尝试嗅探 IE 版本,而且我是 PHP 新手!感谢任何帮助!
如果你想在条件中包含 IE 11
if (preg_match(‘~MSIE|Internet Explorer~i’, $_SERVER[‘HTTP_USER_AGENT’]) || (strpos($_SERVER[‘HTTP_USER_AGENT’], ‘Trident/7.0; rv:11.0’) !== false)) {
// 做点什么
}