![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 21.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Od ponad godziny głowię się nad wykrywaniem języka przeglądarki. Korzystam z $_SERVER['HTTP_ACCEPT_LANGUAGE'], która to zwraca mi takie coś: Kod pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4 To co mnie interesuje, to wyciągnięcie z tego ciągu pl-PL, a w drugiej kolejności en-US. Muszę zatem użyć wyrażeń regularnych, ale nie mam zielonego pojęcia w jaki sposób mógłbym zapisać do tablicy podciągi pasujące do wzorca. Przeszukałem całą dokumentację preg_* na php.net, ale nie znalazłem niczego co by mi pomogło (może coś przeoczyłem? w końcu już dawno po północy). To czym dysponuje to sam wzorzec: Kod /[a-z]{2}\-[A-Z]{2}/ Ale potrzebuję do tego jeszcze tylko funkcji - wystarczy mi sama nazwa. ![]() Ten post edytował ZaqU 21.04.2014, 11:00:21 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
W dokumentacji preg_* tego nie znajdziesz, bo jest to tylko implementacja regexpa. O regexpie musisz poczytać gdzieś indziej, bo za wiele o tym nie przeczytasz w manualu. Można to zrobić przykładowo tak:
ps wykrywanie języka polecam wykonać tylko raz a informację o tym zapisać do cookie/sesji etc. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 21.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki wielkie, działa!
![]() PS. W pierwszym poście wkradł się błąd, zamiast $_SESSION['HTTP_ACCEPT_LANGUAGE'] miało być $_SERVER['HTTP_ACCEPT_LANGUAGE'] ![]() Ten post edytował ZaqU 21.04.2014, 11:00:49 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 285 Pomógł: 18 Dołączył: 30.01.2014 Skąd: <?=$_GET['city']?> Ostrzeżenie: (0%) ![]() ![]() |
mi działa tak do twojego przykładu:
nie wiem jak do innych. --EDIT-- Nie polecam mojego rozwiązania ![]() wyświetla tak: Kod pl,en;q=0.9 Array ( [0] => pl [1] => en;q=0.9 ) Lang 1: pl Lang 2: --EDIT-- @2x down, ja testowałem na telefonie, Opera Mobile 12.10, android 2.3.6 Ten post edytował ZaXaZ 21.04.2014, 11:30:30 -------------------- Jak poprawnie zadać pytanie || Generator #RRGGBB || Kurs: php, mysql <> html & css || Hosting || Validator: html, css || Narzędzia dla programistów |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
-------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 21.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Prawda jest taka, że na każdej przeglądarce działa to inaczej. Przykłady i założenia z pierwszego postu pochodziły z Chrome'a, ale testowałem to też na FF, Operze oraz IE. Wyniki były takie, że na jednych przeglądarkach mamy w ciągu pl-PL, w innym pl-pl, w jeszcze innym samo pl.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Prawda jest taka, że na każdej przeglądarce działa to inaczej. Przykłady i założenia z pierwszego postu pochodziły z Chrome'a, ale testowałem to też na FF, Operze oraz IE. Wyniki były takie, że na jednych przeglądarkach mamy w ciągu pl-PL, w innym pl-pl, w jeszcze innym samo pl. W "in_array" możesz jako argument podać tablicę z argumentami, dzięki czemu tych porównań może być kilka:
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 07:46 |