Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wyrażenia regularne - czy na pewno tak?
messmaker
post
Post #1





Grupa: Zarejestrowani
Postów: 106
Pomógł: 5
Dołączył: 5.12.2008

Ostrzeżenie: (0%)
-----


Jako, że w tematyce wyrażeń regularnych moje umiejętności nieznacznie przekraczają zero, postanowiłem posłużyć się generatorem takich wyrażeń.

Cel: z podanej zmiennej !r234 wyciągnąć 234, dla zmiennej abcd!r1 lub !r13defgh powinien wykonać się "else", czyli przejść może tylko string zaczynający się od !r, po których musi być liczba całkowita.

Oto, co udało mi się wykombinować z użyciem generatora takich wyrażeń:
  1. $txt='abcd!r321238abcd';
  2. if ($c=preg_match_all("/(!r)(\\d+)/is", $txt, $matches)) {
  3. $page="(".$matches[1][0].") (".$matches[2][0].") (".$matches[3][0].")";
  4. }


Powyższy przykład wyświetla:
(!r) (321238) ()

Czyli nie jest do końca idealny. Będę wdzięczny za pomoc, zależy mi tylko na wyciągnięciu liczby a gdyby jeszcze udało się ją w wyrażeniu ograniczyć do np. 100 to byłbym wniebowzięty.

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Pacio
post
Post #2





Grupa: Zarejestrowani
Postów: 105
Pomógł: 27
Dołączył: 30.10.2005
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Przyjmuje ciagi od !r0 do !r100:
  1. if ( preg_match_all("/^!r(\\d{1,2|100})$/is", $txt, $matches) ) {
  2. $page = $matches[1][0];
  3. }
Go to the top of the page
+Quote Post
messmaker
post
Post #3





Grupa: Zarejestrowani
Postów: 106
Pomógł: 5
Dołączył: 5.12.2008

Ostrzeżenie: (0%)
-----


Wywołanie:
  1. $txt='!r8';
  2. if (preg_match_all("/^!r(\\d{1,2|100})$/is", $txt, $matches)) {
  3. $page = $matches[1][0];
  4. }


Niestety nie zwraca ósemki, !r8 nie przechodzi przez warunek.
Go to the top of the page
+Quote Post
Pacio
post
Post #4





Grupa: Zarejestrowani
Postów: 105
Pomógł: 27
Dołączył: 30.10.2005
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Faktycznie, wkradl sie maly blad, nawias klamrowy powinien stac za 2:
  1. $txt='!r8';
  2. if (preg_match_all("/^!r(\\d{1,2}|100)$/is", $txt, $matches)) {
  3. $page = $matches[1][0];
  4. }
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 08:18