Ver Mensaje Individual
  #12 (permalink)  
Antiguo 23/10/2011, 19:24
Avatar de andresdzphp
andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Expresión regular para separar datos HTTP_USER_AGENT

Prueba la función que te dice masterpuppet, igual esa información desde HTTP_USER_AGENT no es que sea muy confiable.

Código PHP:
Ver original
  1. <?php
  2.  
  3. //http://www.php.net/manual/en/function.get-browser.php#101125
  4.  
  5. function getBrowser()
  6. {
  7.     $u_agent = $_SERVER['HTTP_USER_AGENT'];
  8.     $bname = 'Unknown';
  9.     $platform = 'Unknown';
  10.     $version= "";
  11.  
  12.     //First get the platform?
  13.     if (preg_match('/linux/i', $u_agent)) {
  14.         $platform = 'linux';
  15.     }
  16.     elseif (preg_match('/macintosh|mac os x/i', $u_agent)) {
  17.         $platform = 'mac';
  18.     }
  19.     elseif (preg_match('/windows|win32/i', $u_agent)) {
  20.         $platform = 'windows';
  21.     }
  22.    
  23.     // Next get the name of the useragent yes seperately and for good reason
  24.     if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent))
  25.     {
  26.         $bname = 'Internet Explorer';
  27.         $ub = "MSIE";
  28.     }
  29.     elseif(preg_match('/Firefox/i',$u_agent))
  30.     {
  31.         $bname = 'Mozilla Firefox';
  32.         $ub = "Firefox";
  33.     }
  34.     elseif(preg_match('/Chrome/i',$u_agent))
  35.     {
  36.         $bname = 'Google Chrome';
  37.         $ub = "Chrome";
  38.     }
  39.     elseif(preg_match('/Safari/i',$u_agent))
  40.     {
  41.         $bname = 'Apple Safari';
  42.         $ub = "Safari";
  43.     }
  44.     elseif(preg_match('/Opera/i',$u_agent))
  45.     {
  46.         $bname = 'Opera';
  47.         $ub = "Opera";
  48.     }
  49.     elseif(preg_match('/Netscape/i',$u_agent))
  50.     {
  51.         $bname = 'Netscape';
  52.         $ub = "Netscape";
  53.     }
  54.    
  55.     // finally get the correct version number
  56.     $known = array('Version', $ub, 'other');
  57.     $pattern = '#(?<browser>' . join('|', $known) .
  58.     ')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
  59.     if (!preg_match_all($pattern, $u_agent, $matches)) {
  60.         // we have no matching number just continue
  61.     }
  62.    
  63.     // see how many we have
  64.     $i = count($matches['browser']);
  65.     if ($i != 1) {
  66.         //we will have two since we are not using 'other' argument yet
  67.         //see if version is before or after the name
  68.         if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){
  69.             $version= $matches['version'][0];
  70.         }
  71.         else {
  72.             $version= $matches['version'][1];
  73.         }
  74.     }
  75.     else {
  76.         $version= $matches['version'][0];
  77.     }
  78.    
  79.     // check if we have a number
  80.     if ($version==null || $version=="") {$version="?";}
  81.    
  82.     return array(
  83.         'userAgent' => $u_agent,
  84.         'name'      => $bname,
  85.         'version'   => $version,
  86.         'platform'  => $platform,
  87.         'pattern'    => $pattern
  88.     );
  89. }
  90.  
  91. // now try it
  92. $ua=getBrowser();
  93. $yourbrowser= "Your browser: " . $ua['name'] . " " . $ua['version'] . " on " .$ua['platform'] . " reports: <br >" . $ua['userAgent'];
  94. print_r($yourbrowser);
  95. ?>
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP