Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Wyrażenia regularne - czy na pewno tak?
messmaker
post 27.01.2010, 00:58:43
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
Pacio
post 27.01.2010, 01:21:55
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. }


--------------------
Mój Blog Militarny: http://1rBlog.pl
Go to the top of the page
+Quote Post
messmaker
post 27.01.2010, 01:36:08
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 27.01.2010, 11:39:39
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. }


--------------------
Mój Blog Militarny: http://1rBlog.pl
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 10:07