Autor | Zpráva | ||
---|---|---|---|
AlastorM Profil * |
#1 · Zasláno: 30. 6. 2011, 17:32:03
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 |
#2 · Zasláno: 30. 6. 2011, 17:47:00 · Upravil/a: Chamurappi
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 * |
#3 · Zasláno: 30. 6. 2011, 17:59:03
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 |
#4 · Zasláno: 30. 6. 2011, 18:03:35
Reaguji na AlastorMa:
Jak se ten preg_match dozví, v čem má hledat?
|
||
AlastorM Profil * |
#5 · Zasláno: 30. 6. 2011, 18:35:58
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 |
#6 · Zasláno: 30. 6. 2011, 18:48:26
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 * |
#7 · Zasláno: 30. 6. 2011, 19:15:27
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í... |
||
Časová prodleva: 13 let
|
0