Return to Snippet

Revision: 27260
at May 31, 2010 20:23 by blpgirl


Initial Code
<?php
//basado en http://www.stylegala.com/articles/no_more_css_hacks.htm y modificado pa detectar mas navegadores y os.

   //llama la funcion que detecta todo y se inicializan las variables
$d = detect();
$b = $d['browser'];
$v = $d['version'];
$o = $d['os'];
function detect()
    {
    	//nota: firefox debe ir luego de mozilla pues el user agent tiene ambos 
		//y flock debe ir luego de mozilla y firefox por la misma razon
		//chrome también debe ir despues de mozilla y safari porque los contiene a ambos
		//funciona porque siempre queda el valor de la última cadena encontrada
    $browser = array ("IE","OPERA","MOZILLA","NETSCAPE","FIREFOX","SAFARI", "FLOCK", "CHROME");
    $os = array ("WINDOWS","MAC","IPHONE");
    $info['browser'] = "OTHER";
    $info['os'] = "OTHER";
	$user_agent = $_SERVER['HTTP_USER_AGENT'];
	//Por cada valor del array de navegadores
    foreach ($browser as $parent)
        {
        //con strtoupper devuelve la cadena en mayúsculas y con strpos devuelve la posicion de la cadena
		//Si no se encuentra la cadena, devuelve FALSE
        $s = strpos(strtoupper($user_agent), $parent);
		//el user agent siempre suelta: Navegador/NumVersion o Navegador NumVersion pa explorer
		//con esto se tiene la posicion para la version que es justo despues del navegador (s + tamaño nombre navegador)
        $f = $s + strlen($parent);
		//devuelve la cadena que empieza en el caracter f y termina en f+5
        $version = substr($_SERVER['HTTP_USER_AGENT'], $f, 5);
		//reemplaza el numero, punto o / en la cadena version y lo reemplaza por vacio
        $version = preg_replace('/[^0-9,.]/','',$version);
        if ($s)
            {
            //como se encontro el navegador, se asignan los valores
            $info['browser'] = $parent;
            $info['version'] = $version;
            }
        }
    foreach ($os as $val)
        {
        	//eregi encuentra subcadenas sin diferenciar mayusculas de minusculas
        if (eregi($val,strtoupper($_SERVER['HTTP_USER_AGENT']))) $info['os'] = $val;
        }
    return $info;
    } 
?>

Initial URL


Initial Description
lo modifique yo, me gustaria agregar linux tambien. Aca hay una clase pa esto http://www.phpclasses.org/browse/package/2827.html

Initial Title
detectar browser

Initial Tags


Initial Language
PHP