Script-ul pentru a determina browserul utilizatorului în PHP

Recent, un proiect interesant am nevoie pentru a face o determinare a browser-ului și versiunea sa în PHP. Șablonul a fost adaptivă (responcive), și a fost necesar să se adapteze pentru diferite browsere concluzie a elementelor de pagină. Site-ul l-am scris pe motorul dumneavoastră preferat și WordPress temă a fost typeset sub ea. Ca întotdeauna, fără a se gândi de două ori, am urcat peste sarcina la Internet. Surpriza mea a fost când am găsit un script gata, pe care o accept pe deplin top zece google emitent. Respect și dezvoltator uvazhuha și blogger care a scris scenariul și a postat pe blogul său.

Ceea ce mi-a plăcut în mod particular, este faptul că script-ul ar putea determina browserele de pe motor, Gecko, nu doar cele mai importante browsere (Firefox, Chrome, IE, Opera, Safari), și chiar și cele care sunt construite pe nucleul Trident (Maxthon, Avant Browser , MyIE2), și versiunile mai vechi chiar de la Opera, deghizați în IE. În plus, script-ul găsește și afișează versiunea a browser-ului.

Cum este browser-ul pe PHP?
PHP are o variabilă mare numit $ _SERVER [ 'HTTP_USER_AGENT'].
Eu, de exemplu, se pare ca acest lucru:

Acum IE 6
Mozilla / 4.0 (compatibile; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
Aici este un pic mai complicat, dar, de asemenea, nu ar trebui să provoace dificultăți.

Opera 10.61
Opera / 9.80 (Windows NT 5.1; U; ru) Presto / 2.6.30 Versiune / 10.61
Opera a pregătit ne podlyanku: numele browser-ul la început, și versiunea, nu este ciudat, în cele din urmă.

Safari 5.1
Mozilla / 5.0 (Windows; U; Windows NT 6.1; ru-RU) AppleWebKit / 533.17.8 (KHTML, cum ar fi Gecko) Version / 5.0.1 Safari / 533.17.8
Safari este, de asemenea, surprinzător: un slash merge nu este numărul versiunii. Numărul de versiune vine un pic mai devreme.

Chrome 6.0.427.0
Mozilla / 5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit / 534,1 (KHTML, cum ar fi Gecko) Chrome / 6.0.427.0 Safari / 534,1
Chrome trage mai ușor, mai mult ar fi fost frumos să nu fi confundat cu Safari ...

(Pe de ce toate browserele (cu excepția Opera) se numește Mozilla poate fi într-o formă simplă și de divertisment găsit aici.)

Ați învățat deja unele varietate în linie User-agent care oferă doar cinci browsere.
Dar, 9 din 10 cazuri, vom salva următoarea expresie regulată:

O expresie regulată a defini un browser

Funcția user_browser ($ agent)

preg_match ( „/ (MSIE | Opera | Firefox | Chrome | Versiune | Opera Mini | Netscape | Konqueror | SeaMonkey | Camino | Minat | Icewasel | K-Meleon | Maxthon) (: \ / |) ([0-9.] +) / „$ agent $ browser_info) ..; // expresie regulată care otpredelit permite 90% din browsere

lista ($ .. browser-$ versiune) = $ browser_info; // obține datele din variabila matrice

if (preg_match ( "/ Operă ([0-9.] +) / i". $ agent. $ opera)) întoarcere 'Opera'. $ Opera [1]; // definitie _ochen_staryh_ versiuni (până la 8.50) pot fi îndepărtate Opera, dacă se dorește

if ($ browser-ul == 'MSIE')

preg_match ( "/ (Maxthon | Avant Browser | MyIE2) / i" $ $ agent de exemplu ..); // verificați pentru a vedea dacă aceasta se bazează pe dezvoltarea de IE

if ($ ie) întoarce $ adică [1]. „Bazat pe IE“. $ Versiune; // dacă da, reveniți acest mesaj

întoarce 'IE'. $ Versiune; // altceva reveni doar IE și numărul versiunii

if ($ browser-ul == 'Firefox')

preg_match ( "/(Flock|Navigator|Epiphany)\/([0-9.]+)/" agent $ $ ff ..); // verificați pentru a vedea dacă aceasta se bazează pe dezvoltarea de Firefox

if ($ ff) întoarcere $ ff [1]. ''. $ Ff [2]; // în caz afirmativ, numărul de pini și versiunea

if ($ browser-ul == 'Opera' $ Versiunea == '9.80') întoarcerea 'Opera'. substr ($ agent - 5). // în cazul în care browser-ul este definit ca o Opera 9.80, ia versiunea de Opera de la capătul liniei

if ($ == browser-ul 'Versiune') întoarcere 'Safari'. $ Versiune; // definesc Safari

în cazul în care (. browser-ul $ strpos ($ agent de 'Gecko'.)) întoarcere 'browser bazat pe Gecko'; // browsere nerecunoscute verifica dacă acestea sunt pe motorul Gecko, și returnează acest mesaj

reveni $ browser-ul. ''. $ Versiune; // returneaza toate celelalte browser-ul și versiunea

exemple de
Tabelul conține rezultatul celor două funcții - în prima coloană a browser-ului, care solicită funcția în al doilea - funcția de răspuns cu browsere puțin cunoscute, al treilea - rezultatul funcției condensat.

Rezultatul este o funcție completă

articole similare