Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyrażenia regularne - czy na pewno tak?
Forum PHP.pl > Forum > Przedszkole
messmaker
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
Pacio
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. }
messmaker
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.
Pacio
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. }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.