#5107 - Note : eh bah…
/me veut faire un détecteur de navigateur pour faire une page d’info avec nom de navigateur, OS, versions…
Parser l’user-agent ne peut pas se faire avec une regex : elles sont trop différentes d’un navigateur à l’autre…
La plupart des détecteurs en ligne utilisent d’ailleurs un dictionnaire immense.
Il est possible de parser l’UA, mais faut mixer les deux méthodes. Par exemple pour Firefox, l’UA contient toujours "firefox" et globalement a toujours la même forme. C’est seulement là qu’on peut faire une regex.
Idem pour Opera, IE…
Mais les navigateurs un peu exotiques, c’est trop le bordel.
Ils peuvent pas se mettre d’accord, non ?
Genre ça :
Nom/version (plateforme; os; version;) moteurRendu/version ?
Firefox/19.0 (X11; Linux; 3.6;) Gegko/2010xxx
IE/10 (NT6.1; Windows; 7) Trident/6.0
Opera/12.10 (NT6.0; Windows; Vista) Presto/2.12
Nooooon, au lieu de ça, nous avons chromium (dont le nom contient Gecko, khtml, Webkit ET Mozilla, Chrome, Chromium, Safari ET Linux, Ubuntu, Apple). Ben voyons:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Ubuntu Chromium/24.0.1312.56 Chrome/24.0.1312.56 Safari/537.17
Ou ça pour IE (plus simple, mais le moteur de rendu est DANS la parenthèse, contrairement à tous les autres) :
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)
Ou pour Opera :
Opera/9.80 (X11; Linux x86_64; Edition Linux Mint) Presto/2.12.388 Version/12.14
Dont la version se trouve à la fin et le début contient toujours 9.80, à cause de regex foireuses des webmasters qui, avec Opera 10, détectaient seulement Opera 1.
Bah.
Je vais m’amuser, je le sens. Miam.
Parser l’user-agent ne peut pas se faire avec une regex : elles sont trop différentes d’un navigateur à l’autre…
La plupart des détecteurs en ligne utilisent d’ailleurs un dictionnaire immense.
Il est possible de parser l’UA, mais faut mixer les deux méthodes. Par exemple pour Firefox, l’UA contient toujours "firefox" et globalement a toujours la même forme. C’est seulement là qu’on peut faire une regex.
Idem pour Opera, IE…
Mais les navigateurs un peu exotiques, c’est trop le bordel.
Ils peuvent pas se mettre d’accord, non ?
Genre ça :
Nom/version (plateforme; os; version;) moteurRendu/version ?
Firefox/19.0 (X11; Linux; 3.6;) Gegko/2010xxx
IE/10 (NT6.1; Windows; 7) Trident/6.0
Opera/12.10 (NT6.0; Windows; Vista) Presto/2.12
Nooooon, au lieu de ça, nous avons chromium (dont le nom contient Gecko, khtml, Webkit ET Mozilla, Chrome, Chromium, Safari ET Linux, Ubuntu, Apple). Ben voyons:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Ubuntu Chromium/24.0.1312.56 Chrome/24.0.1312.56 Safari/537.17
Ou ça pour IE (plus simple, mais le moteur de rendu est DANS la parenthèse, contrairement à tous les autres) :
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)
Ou pour Opera :
Opera/9.80 (X11; Linux x86_64; Edition Linux Mint) Presto/2.12.388 Version/12.14
Dont la version se trouve à la fin et le début contient toujours 9.80, à cause de regex foireuses des webmasters qui, avec Opera 10, détectaient seulement Opera 1.
Bah.
Je vais m’amuser, je le sens. Miam.