Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: preg_match tylko cyfry?
Forum PHP.pl > Forum > PHP
mskiba
Czemu to nie dziala:

  1. $product_code = "Z 11           0001335702";
  2.  
  3. $nr_uzyt = substr($product_code,-10);
  4.  
  5. if(preg_match("|^[0-9]$|D",$nr_uzyt))
  6. {
  7. echo $nr_uzyt.": yes";
  8. }
  9. else{
  10. echo $nr_uzyt.": No";
  11. }
SmokAnalog
Nie działa, bo Twój wzorzec usiłuje dopasować coś takiego:
Kod
początek, dowolna cyfra, koniec

Będzie to pasowało do takich ciągów znaków jak 2, 5, 0, 8, a nie będzie nawet do takich jak 21, 88 itd.

Spróbuj tak:
  1. if(preg_match("|[0-9]+|",$nr_uzyt))


Dodałem plus za wzorcem cyfry, bo chcesz dopasować dłuższy ciąg cyfr niż jednocyfrowy, prawda? Usunąłem też flagę D, bo nigdy o takiej nie słyszałem, a może się mylę?
robertpiaty
Poza tym zamiast | używaj / Znak | oznacza "lub". Początek i koniec wyrażenia regularnego oznacza się znakami /
  1. if(preg_match("/[0-9]+/",$nr_uzyt))
kreatiff
Cytat(robertpiaty @ 8.03.2015, 14:03:34 ) *
...Początek i koniec wyrażenia regularnego oznacza się znakami /
Jak najbardziej można stosować inne znaki. Wszystko rozchodzi się o ewentualne zastosowanie "ucieczki" przed znakami służącymi za separator, ale także znajdującymi się we wzorze. Sam preferuję #, bo / występuje zbyt często w dopasowanych wzorach, a dzięki temu nie muszę przed sleszami stosować znaku ucieczki, przez co wyrażenie jest dla mnie ciut bardziej czytelne.
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.