Skip to content
This repository was archived by the owner on Jan 25, 2023. It is now read-only.

Commit 3f2ab78

Browse files
committed
Merge pull request #17 from udemy/master
Handle some edge cases for IE11
2 parents b197a62 + 0fa2650 commit 3f2ab78

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

src/Browser/BrowserDetector.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ private static function checkBrowserInternetExplorer(Browser $browser, UserAgent
144144
$browser->setVersion('1.5');
145145
}
146146
return true;
147-
} // Test for versions > 1.5 and < 11
147+
} // Test for versions > 1.5 and < 11 and some cases of 11
148148
else if (stripos($userAgent->getUserAgentString(), 'msie') !== false && stripos($userAgent->getUserAgentString(), 'opera') === false) {
149149
// See if the browser is the odd MSN Explorer
150150
if (stripos($userAgent->getUserAgentString(), 'msnb') !== false) {
@@ -156,6 +156,14 @@ private static function checkBrowserInternetExplorer(Browser $browser, UserAgent
156156
$aresult = explode(' ', stristr(str_replace(';', '; ', $userAgent->getUserAgentString()), 'msie'));
157157
$browser->setName($browser::IE);
158158
$browser->setVersion(str_replace(array('(', ')', ';'), '', $aresult[1]));
159+
// See https://msdn.microsoft.com/en-us/library/ie/hh869301%28v=vs.85%29.aspx
160+
// Might be 11, anyway !
161+
if (stripos($userAgent->getUserAgentString(), 'trident') !== false) {
162+
preg_match('/rv:(\d+\.\d+)/', $userAgent->getUserAgentString(), $matches);
163+
if (isset($matches[1])) {
164+
$browser->setVersion($matches[1]);
165+
}
166+
}
159167
return true;
160168
} // Test for versions >= 11
161169
else if (stripos($userAgent->getUserAgentString(), 'trident') !== false) {

tests/Browser/Tests/BrowserTest.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,14 @@ public function testInternetExplorer11()
2626
$browser = new Browser("Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko");
2727
$this->assertEquals(Browser::IE, $browser->getName());
2828
$this->assertEquals('11.0', $browser->getVersion());
29+
30+
$browser = new Browser("Mozilla/5.0 (MSIE 9.0; Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko");
31+
$this->assertEquals(Browser::IE, $browser->getName());
32+
$this->assertEquals('11.0', $browser->getVersion());
33+
34+
$browser = new Browser("Mozilla/5.0 (MSIE 9.0; Windows NT 6.3; WOW64; Trident/7.0;) like Gecko");
35+
$this->assertEquals(Browser::IE, $browser->getName());
36+
$this->assertEquals('9.0', $browser->getVersion());
2937
}
3038

3139
public function testSeaMonkey()

0 commit comments

Comments
 (0)