PHP système d'exploitation

Fermé
serges - 19 août 2010 à 01:06
 serges - 19 août 2010 à 01:23
Bonjour,

Je possède le code PHP suivant qui me renvoie le système d'exploitation utilisé par l'internaute qui accède à mon site web.


<?php
/*******************************************************
* Fonction : getOs
*----------------------------------------------
* @Desc : Retourne le nom de l'os grâce à l'user agent
* @Param : $ua (str) : l'user agent dont on veux trouver l'os
* @Return : (str) le nom de l'os trouvé sinon "Système d'exploitation inconnu"
* @licence : https://opensource.org/licenses/lgpl-license.php GNU LGPL
*********************************************************/
function getOS( $ua = '' )
{
if( ! $ua ) $ua = $_SERVER['HTTP_USER_AGENT'];
$os = 'Système d'exploitation inconnu';

$os_arr = Array(
// -- Windows
'Windows NT 6.1' => 'Windows Seven',
'Windows NT 6.0' => 'Windows Vista',
'Windows NT 5.2' => 'Windows Server 2003',
'Windows NT 5.1' => 'Windows XP',
'Windows NT 5.0' => 'Windows 2000',
'Windows 2000' => 'Windows 2000',
'Windows CE' => 'Windows Mobile',
'Win 9x 4.90' => 'Windows Me.',
'Windows 98' => 'Windows 98',
'Windows 95' => 'Windows 95',
'Win95' => 'Windows 95',
'Windows NT' => 'Windows NT',

// -- Linux
'Ubuntu' => 'Linux Ubuntu',
'Fedora' => 'Linux Fedora',
'Linux' => 'Linux',

// -- Mac
'Macintosh' => 'Mac',
'Mac OS X' => 'Mac OS X',
'Mac_PowerPC' => 'Mac OS X',

// -- Autres ...
'FreeBSD' => 'FreeBSD',
'Unix' => 'Unix',
'Playstation portable' => 'PSP',
'OpenSolaris' => 'SunOS',
'SunOS' => 'SunOS',
'Nintendo Wii' => 'Nintendo Wii',
'Mac' => 'Mac',
);

$ua = strtolower( $ua );
foreach( $os_arr as $k => $v )
{
if( ereg( strtolower( $k ), $ua ) )
{
$os = $v;
break;
}
}
return $os;
}

//-- Exemple d'utilisation :
echo getOS( $_SERVER['HTTP_USER_AGENT'] );

?>



Cependant, j'obtiens cela :
Deprecated: Function ereg() is deprecated in C:\Program Files (x86)\EasyPHP-5.3.3\www\accueil.php on line 71
Windows Seven

Le code est fonctionnel car il retourne bien l'OS (Windows Seven)
Mais la phrase : Deprecated: Function ereg() is deprecated... est gênante.

J'ai fais des recherche et je sais qu'il faut remplacer la fonction ereg par preg_match mais je n'arrive plus à faire fonctionner le code avec cette nouvelle fonction.

Merci par avance pour votre aide
A voir également:

2 réponses

Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
Modifié par Leviathan49 le 19/08/2010 à 01:20
Oui preg_match ne s'utilise pas de la même façon que ereg.
https://www.php.net/manual/fr/function.preg-match.php
Dans ton cas essaye :
if( preg_match("#".$k."#i", $ua ) ) 
Le i veut dire que que tu n'est pas sensible à la casse.
2
Merci pour ta solution elle répond à mes attentes.
0