Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] preg_match - ucieczka z alternatywy
Forum PHP.pl > Forum > Przedszkole
kurkusmaximus
Przyjmijmy, że posiadam ciąg: 235325|325325

Próbuję sprawdzić czy ten ciąg składa się z: tylko liczby, znak alternatywy (|), tylko liczby

Gdy stosuję ten skrypt:

  1. $ciag = "235325|325325";
  2.  
  3. if( preg_match("/\d+\|\d+/", $ciag) ){
  4. print "a";
  5. }else{
  6. print "b";
  7. }

zwraca poprawnie znak "a"

gdy zamienię ciąg na:
  1. $ciag = "U235325|U325325";

zwraca poprawnie znak "b"

ale gdy zamienię ciąg na:
  1. $ciag = "2U35325|3U25325";

zwraca znak "a"

Powodem takiego działania jest źle poskładane wyrażenie regularne.
Tak wygląda poprawne:
  1. if( preg_match("/^\d+\|\d+/", $ciag) ){
  2. print "a";
  3. }else{
  4. print "b";
  5. }


Na poczatku myślałem, że nie robię poprawnej ucieczki z |, teraz już wiem, że nie sprawdzałem preg_matchem ciągu od początku do końca, tylko "wyrywkowo".
wNogachSpisz
Co chcesz sprawdzić?
Sephirus
Sprecyzuj pytanie...

Regexp dopasowany do tego wygląda tak:

  1. $ciag = "dfjf2|4536";
  2.  
  3. if( preg_match("/[a-z0-9]+\|\d+/", $ciag) ){
  4. print "a";
  5. }else{
  6. print "$b";
  7. }


kurkusmaximus
Przepraszam za tak niejasno sformułowane pytanie, mój błąd.
Zaktualizowałem pierwszy post i zarazem podałem rozwiązanie mojego problemu.

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.