Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] preg_match - ucieczka z alternatywy
kurkusmaximus
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 27.01.2010
Skąd: Sopot

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


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".

Ten post edytował kurkusmaximus 30.07.2012, 12:52:30
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
wNogachSpisz
post
Post #2





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Co chcesz sprawdzić?
Go to the top of the page
+Quote Post
Sephirus
post
Post #3





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


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. }


Go to the top of the page
+Quote Post
kurkusmaximus
post
Post #4





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 27.01.2010
Skąd: Sopot

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


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

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: 16.09.2025 - 03:30