Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Regulärer Ausdruck greift nicht (https://www.delphipraxis.net/79385-regulaerer-ausdruck-greift-nicht.html)

S2B 21. Okt 2006 14:03


Regulärer Ausdruck greift nicht
 
Moin moin,

zuerst mal vorneweg: Ich hab schon seit einiger Zeit nichts mehr mit regulären Ausdrücken gemacht, deswegen kann es sein, dass das hier ein ganz schlimmer Anfängerfehler ist. :stupid:
Ich habe folgende RegEx:
Code:
^([a-z]+)[^,]*(,([a-z]+)[^,]*)*$
Damit versuche ich, Strings in dieser Form zu zerpflücken:
Code:
de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Nur gibt mir PHP das aus:
Code:
Array
(
    [0] => de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
    [1] => de
    [2] => en
)
(Das erste ist wieder der komplette String, der wird von PHP immer noch zusätzlich zurückgegeben.)
Meiner Meinung nach sollte aber das zurückgegeben werden:
Code:
Array
(
    [0] => de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
    [1] => de
    [2] => de
    [3] => en
    [4] => en
)
Soo, jetzt seid ihr dran. :duck:

Dax 21. Okt 2006 14:08

Re: Regulärer Ausdruck greift nicht
 
Mach einfach die zwei * non-greedy ;)
Code:
^([a-z]+)[^,]*?(,([a-z]+)[^,]*?)*$

S2B 21. Okt 2006 14:10

Re: Regulärer Ausdruck greift nicht
 
Funktioniert leider nicht, bei einem Komma greift der Teilausdruck ja sowieso nicht mehr...

S2B 22. Okt 2006 10:43

Re: Regulärer Ausdruck greift nicht
 
Ich hab das Problem jetzt anders gelöst:
Code:
$accept_language = (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : $_ENV['HTTP_ACCEPT_LANGUAGE'];
$accept_languages = explode(',', $accept_language);

foreach ($accept_languages as $accept_language)
{
   $accept_language = trim($accept_language);

   if (preg_match('#^[a-z]+#i', $accept_language, $match))
   {
      if (isset($match[0]) && in_array($match[0], $languages))
      {
         $user_lang = $match[0];
         break;
      }
   }
}

alcaeus 22. Okt 2006 10:55

Re: Regulärer Ausdruck greift nicht
 
Kleiner Tipp am Rande: wenn du schon die User-Lang abfraegst, dann solltest du sie auch korrekt verwerten und den q-Faktor beruecksichtigen.

Greetz
alcaeus

S2B 22. Okt 2006 11:45

Re: Regulärer Ausdruck greift nicht
 
Zitat:

Zitat von alcaeus
Kleiner Tipp am Rande: wenn du schon die User-Lang abfraegst, dann solltest du sie auch korrekt verwerten und den q-Faktor beruecksichtigen.

Ich ging davon aus, dass die Sprachen automatisch in der richtigen Reihenfolge vorliegen, da das mein FF so macht... :duck: Können die auch vermischt sein?

alcaeus 22. Okt 2006 13:02

Re: Regulärer Ausdruck greift nicht
 
Ja. Genau deswegen gibt es ja den Q-Faktor ;)

Greetz
alcaeus


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz