Un poco macchinoso come codice, se il controllo è fisso.
Cicla inutilmente anche se trova la corrispondenza e fa due controlli, uno dei quali inutile, senza contare che le info di _SERVER potrebbero mancare...
Codice PHP:
function my_getenv($key) {
  if( isset( 
$_SERVER[$key] ) ) {
    return 
$_SERVER[$key]
  } else {
    return 
getenv($key);
  }
}

$useragent strtolower(my_getenv('HTTP_USER_AGENT'));

if ( 
strstr$useragent'msie' ) ) {
    
// fai qualcosa

se invece ci fidiamo e le info di _SERVER le diamo per scontate
Codice PHP:
$useragent strtolower($_SERVER["HTTP_USER_AGENT"]);

if ( 
strstr$useragent'msie' ) ) {
    
// fai qualcosa

Apro una parente. Esiste una comodissima funzione che restituisce molte più info che il normale http_user_agent: get_browser. Ha bisogno di un file aggiuntivo per funzionare, leggete la doc!!

Ricordiamo comunque che un browser potrebbe mandare un header differente o non mandarne affatto, sebbene forse solo l'un percento delle persone lo sa e di questo solo l'un percento lo fa..