Autor Zpráva
AlastorM
Profil *
Snažím se udělat si skript, který zjistí verzi prohlížeče a vypíše uživateli, co zrovna používá.

Uživateli by se mělo vypsat: Váš prohlížeč je Opera verze 11.50 - používáte aktuální verzi apod.

Mám tento skript (pro určení Windows IE 9):

<?php
$user_agent = $_SERVER['HTTP_USER_AGENT'];
if (preg_match("~(Trident)/(5.[0-9]{1,3})~i"))
echo 'Váš prohlížeč je Windows Internet Explorer verze 9. Používáte aktuální verzi.';
?> 


IE 9 se identifikuje takto:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)

Opera 11.50 takto:
Opera/9.80 (Windows NT 6.1; U; cs) Presto/2.9.168 Version/11.50

Firefox 4.0 takto:
Mozilla/5.0 (Windows NT 6.1; rv:2.0) Gecko/20100101 Firefox/4.0

Následující kus kódu by měl tedy provést identifikaci prohlížeče:

if (preg_match("~(Trident)/(5.[0-9]{1,3})~i"))


Bohužel nevím, jak tento kód zapsat, aby fungoval - neustále mi to hlásí, že funkce preg_match() očekává dva parametry

Výsledný kód by měl být zhruba takto:

<?php
$user_agent = $_SERVER['HTTP_USER_AGENT'];
if (preg_match("Pokud obsahuje Version/11.50"))
echo 'Váš prohlížeč je Opera verze 11.50 - používáte aktuální verzi.';
elseif (preg_match("Pokud obsahuje Trident/5.0"))
echo 'Váš prohlížeč je Windows Internet Explorer verze 9 - používáte aktuální verzi.';
elseif (preg_match("Pokud obsahuje Firefox/4.0"))
echo 'Váš prohlížeč je Mozzila Firefox verze 4. Používáte aktuální verzi.';
?>


Takže pro upřesnění - potřeboval bych poradit s touto částí - zbytek by snad neměl být problém, když budu vědět, jak to zapsat

if (preg_match("~(Trident)/(5.[0-9]{1,3})~i"))


Případně pokud mi tam něco chybí nebo přebývá tak co?
Chamurappi
Profil
Reaguji na AlastoraM:
neustále mi to hlásí, že funkce preg_match() očekává dva parametry
Nenapadlo tě podívat se do dokumentace, které dva parametry by tedy měla mít? (Když už ti to není na první pohled jasné…)
AlastorM
Profil *
To jsem udělal - bohužel ani tak nevím, jak to upravit. A ani jinde jsem nenašel nic, z čeho bych byl moudřejší
Chamurappi
Profil
Reaguji na AlastorMa:
Jak se ten preg_match dozví, v čem má hledat?
AlastorM
Profil *
V čem má hledat - to mi nějak nedošlo vůbec :-( - hloupá chyba. Spíše jsem myslel, že tam má ještě někde něco být, nebo něco chybí, ale zrovna tato varianta mi nedošla.

<?php
$user_agent = $_SERVER['HTTP_USER_AGENT'];
if (preg_match("~(Version)/(11.50)~i", $user_agent))
echo 'Váš prohlížeč je Opera verze 11.50. Používáte aktuální verzi.';
elseif (preg_match("~(Trident)/(5.0)~i", $user_agent))
echo 'Váš prohlížeč je Windows Internet Explorer verze 9. Používáte aktuální verzi.';
elseif (preg_match("~(Firefox)/(4.0)~i", $user_agent))
echo 'Váš prohlížeč je Mozzila Firefox verze 4. Používáte aktuální verzi.';
?> 


Díky za postrčení. Myslíš, že je to takto udělané vhodné, nebo je to hrůza?
Yur4Y
Profil
AlastorM:
Myslíš, že je to takto udělané vhodné, nebo je to hrůza?
V prvom rade si myslím, že je hrôza samotný nápad. Myslíš, že potrebuje návštevník od teba vedieť, čo používa? A myslíš, že budeš zvládať každých niekoľko týždňov obnovovať tvoj kód kvôli novej verzii niektorého prehliadača?
Ak ti stačí funkcionalita, akú má tvoj posledný kód, nepotrebuješ regexpy. Použi strpos(). A ak trváš na preg_match, escapuj bodku.
AlastorM
Profil *
Yur4Y:
V prvom rade si myslím, že je hrôza samotný nápad. Myslíš, že potrebuje návštevník od teba vedieť, čo používa? A myslíš, že budeš zvládať každých niekoľko týždňov obnovovať tvoj kód kvôli novej verzii niektorého prehliadača?

Ani nevíš k čemu to mám, tak se tím ani nezabývej.

Ak ti stačí funkcionalita, akú má tvoj posledný kód, nepotrebuješ regexpy. Použi strpos(). A ak trváš na preg_match, escapuj bodku.
Vůbec nevím proč a jak použít strpos() a co myslíš tímto - "nepotrebuješ regexpy." PHP se účím a to tak, že vytvářím různé skripty, které mě zajímají. A jak se dívám, tak funkce strpos() se mi do tohoto moc nehodí...

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0