PHP: Bei Internet Explorer 6, 7, 8 oder 9

Lesezeit: 5 Minuten

Ich möchte eine Bedingung in PHP für die verschiedenen Versionen von Internet Explorer nach folgendem Muster erstellen:

if($browser == ie6){ //do this} elseif($browser == ie7) { //dothis } elseif...

Ich habe viele Variationen von ähnlichem Code gesehen, aber auf der Suche nach etwas super Einfachem, das sehr einfach zu codieren ist, um einige einfache if and else und verschiedene Dinge zu tun.

Danke

BEARBEITEN: Ich brauche dies, um Benutzern verschiedene Nachrichten anzuzeigen, sodass CSS-Bedingungen usw. nicht gut sind.

  • Möchten Sie unterschiedliche CSS bedienen? In diesem Fall überlegen bedingte Kommentare. Weniger Stress

    – Pekka

    14. März 2011 um 17:49 Uhr


  • Anscheinend unterstützt IE10 keine bedingten Anweisungen.

    – CharlieM

    22. April 2013 um 15:47 Uhr

PHP Bei Internet Explorer 6 7 8 oder 9
Cameron

Dies ist, was ich am Ende mit einer Variation davon gemacht habe, die nach IE8 und darunter sucht:

if (preg_match('/MSIE\s(?P<v>\d+)/i', @$_SERVER['HTTP_USER_AGENT'], $B) && $B['v'] <= 8) {
    // Browsers IE 8 and below
} else {
    // All other browsers
}

  • Dieses Muster erkennt Internet Explorer 10 als Internet Explorer 1.

    – Chaos

    20. Juli 2012 um 23:49 Uhr

  • Ich denke, einige Versionen von Opera passen dazu, aber sie können herausgefiltert werden, indem Sie nach “Opera” suchen.

    – Liam

    6. September 2012 um 11:32 Uhr

  • ändere es einfach auf '/(?i)msie [2-8]/'. Muss man das wirklich prüfen dh 1? Es wurde 1995 veröffentlicht und einige Monate später durch ie2 ersetzt.

    – Landon

    10. Mai 2013 um 16:07 Uhr


  • Ich habe es geändert [4-8]. IE-Updates werden immer häufiger und ich möchte wirklich sicherstellen, dass ich während der Lebensdauer der Web-App, an der ich arbeite, keine ähnlichen Änderungen vornehmen muss (da sie nur eine Lebensdauer von 3 Jahren hat). Wenn jemand mit IE 5 oder weniger im Internet surft, hat er VIEL mehr Probleme als beim Anzeigen meiner Web-App.

    – Adam Erstelle

    22. November 2013 um 1:35 Uhr

  • Wenn Sie nur einen Punkt hinzufügen, wird nach Versionen mit niedrigerer Nummer gesucht, ohne nach Version 10, 20 usw. zu suchen. '/(?i)msie [1-8]\./'

    – Michaellindahl

    11. Februar 2014 um 20:04 Uhr

PHP Bei Internet Explorer 6 7 8 oder 9
Doug

Eine Version, die weiterhin sowohl mit IE10 als auch mit IE11 funktioniert:

preg_match('/MSIE (.*?);/', $_SERVER['HTTP_USER_AGENT'], $matches);
if(count($matches)<2){
  preg_match('/Trident\/\d{1,2}.\d{1,2}; rv:([0-9]*)/', $_SERVER['HTTP_USER_AGENT'], $matches);
}

if (count($matches)>1){
  //Then we're using IE
  $version = $matches[1];

  switch(true){
    case ($version<=8):
      //IE 8 or under!
      break;

    case ($version==9 || $version==10):
      //IE9 & IE10!
      break;

    case ($version==11):
      //Version 11!
      break;

    default:
      //You get the idea
  }
}

  • Ich bin mir nicht sicher, warum Sie eine switch-Anweisung verwendet haben, wenn es scheint, dass ein if/then angemessener wäre, aber das hat großartig funktioniert. Und anscheinend waren Sie der einzige, der gelesen hat, dass das OP eine separate Versionsunterstützung wollte.

    – Jake

    9. Mai 2013 um 20:42 Uhr


  • Wir mussten tatsächlich IE einschließlich 11 anvisieren, und das hat wunderbar funktioniert

    – code_monk

    28. Mai 2014 um 15:21 Uhr

  • Neuere Geräte können im IE11-Benutzeragenten andere Attribute haben, wie hier erwähnt: github.com/woothee/woothee-java/issues/6. Um das zu beheben, sollte der reguläre Ausdruck wie folgt geändert werden: Trident\/\d{1,2}.\d{1,2};(.*)rv:([0-9]*)und $version = $matches[1]; geändert werden soll $version = ($matches[2] == 11)?$matches[2]:$matches[1];. Ein Beispiel für die Regex finden Sie hier: regexr.com/3fb4k.

    – jdgregson

    21. Februar 2017 um 9:05 Uhr

1646180047 601 PHP Bei Internet Explorer 6 7 8 oder 9
Daff

Sie können die Servervariable HTTP_USER_AGENT überprüfen. Der vom IE übertragene User Agent enthält MSIE

if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) { ... }

Für bestimmte Versionen können Sie Ihre Bedingung verlängern

if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6.') !== false) { ... }

Siehe auch diese verwandte Frage.

  • @dixus für IE11 müssen Sie dies tun preg_match('/Trident\/7.0; rv:11.0/', $_SERVER['HTTP_USER_AGENT'])

    – Andrés SK

    9. Dezember 2014 um 22:05 Uhr

Hier ist eine großartige Ressource zum Erkennen von Browsern in PHP: http://php.net/manual/en/function.get-browser.php

Hier ist eines der Beispiele, das am einfachsten erscheint:

<?php
function get_user_browser()
{
    $u_agent = $_SERVER['HTTP_USER_AGENT'];
    $ub = '';
    if(preg_match('/MSIE/i',$u_agent))
    {
        $ub = "ie";
    }
    elseif(preg_match('/Firefox/i',$u_agent))
    {
        $ub = "firefox";
    }
    elseif(preg_match('/Safari/i',$u_agent))
    {
        $ub = "safari";
    }
    elseif(preg_match('/Chrome/i',$u_agent))
    {
        $ub = "chrome";
    }
    elseif(preg_match('/Flock/i',$u_agent))
    {
        $ub = "flock";
    }
    elseif(preg_match('/Opera/i',$u_agent))
    {
        $ub = "opera";
    }

    return $ub;
}
?>

Dann könnten Sie später in Ihrem Code so etwas sagen wie

$browser = get_user_browser();
if($browser == "ie"){
    //do stuff
}

Ich mache das

$u = $_SERVER['HTTP_USER_AGENT'];

$isIE7  = (bool)preg_match('/msie 7./i', $u );
$isIE8  = (bool)preg_match('/msie 8./i', $u );
$isIE9  = (bool)preg_match('/msie 9./i', $u );
$isIE10 = (bool)preg_match('/msie 10./i', $u );

if ($isIE9) {
    //do ie9 stuff
}

  • Ich mag diese Version und habe sie so modifiziert, dass sie für IE11 unter Windows 8.1 enthalten ist.

    – Mike Kormendy

    6. November 2014 um 3:21 Uhr

1646180047 438 PHP Bei Internet Explorer 6 7 8 oder 9
Mike S

PHP hat eine Funktion namens get_browser() Das gibt ein Objekt (oder ein Array, wenn Sie dies wünschen) mit Details über den Browser des Benutzers und dessen Möglichkeiten zurück.

Ein einfacher Blick durch gab mir diesen Code:

$browser = get_browser( null, true );
if( $browser['name'] == "Firefox" )
    if( $browser['majorversion'] == 4 )
        echo "You're using Firefox version 4!";

Dies ist kein todsicherer Weg (wie es aus liest HTTP_USER_AGENTdie gespooft werden kann und manchmal von PHP falsch analysiert wird), aber es ist meines Wissens die einfachste, die Sie finden können.

  • Ich mag diese Version und habe sie so modifiziert, dass sie für IE11 unter Windows 8.1 enthalten ist.

    – Mike Kormendy

    6. November 2014 um 3:21 Uhr

PHP Bei Internet Explorer 6 7 8 oder 9
xsor

if (isset($_SERVER['HTTP_USER_AGENT']) && preg_match("/(?i)msie|trident|edge/",$_SERVER['HTTP_USER_AGENT'])) {
// eh, IE found
}

  • Dies entspricht nicht den Versionen (und entspricht IE 10 usw.)

    – Oytun

    10. November 2015 um 15:31 Uhr

906340cookie-checkPHP: Bei Internet Explorer 6, 7, 8 oder 9

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy