Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Wyrażenie Regularne php, Problem z walidiacją numeru Tel przy użyciu wyrażenia regularnego
korey
post
Post #1





Grupa: Zarejestrowani
Postów: 122
Pomógł: 2
Dołączył: 14.08.2009
Skąd: Łódź

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


Witam!
Napisałem coś takiego:

  1.  
  2. //Sprawdzam pole "szkola_tel"
  3. if(empty($szkola_tel)){
  4. $info_txt_szkola_tel.='<font color="#B20000"> Pole nie zostało wypełnione.</font>';
  5. $blad=true;
  6. }
  7. else if(!ereg('^[0-9]{3}-[0-9]{2,3}-[0-9]{2,3}$' , $szkola_tel )){
  8. $info_txt_szkola_tel.='<font color="#B20000">Nieprawidłowy numer telefonu.</font>';
  9. $help_txt.='~ <font color="#B20000">Nr.Tel podaj w/g przykładu: <b>000-000-000</b> lub <b>000-00-00</b></font><br />';
  10. $blad=true;
  11. }
  12. else{
  13. $info_txt_szkola_tel.='<font color="#207C07"> OK.</font>';
  14. }

Wyrażenie działa poprawnie jak wpisuje sie numrey tel a takich formatach:
000-00-00
lub
000-000-000

Chciałbym do tego wszystkiego dodać numer kierunkowy, czyli np: +XX\s
lecz gdy próbuje to robię wyrażenie zwraca błąd. (IMG:style_emoticons/default/sad.gif)

Z góry dziękuje za pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Po pierwsze czy ktoś zwrócił uwagę na fakt, że + jest znakiem specjalnym wyrażeń i nie może być wstawiany ot tak sobie, gdyż oznacza, że poprzedzany element musi wystąpić przynajmniej jeden raz? Inna sprawa, że nawet gdy to poprawisz to nie uwzględniasz, że brak kierunkowego znowu wywali błąd. Ta część ma być opcjonalna, więc bez użycia ? się nie obejdzie.
EDIT: Chyba mi się na oczy już rzuciło dziś, albo za długo siedzę przy kompie, ale nie zauważyłem Twojego i późniejszego. Opisywałem wcześniejsze z postem TNT włącznie. Moja wina i kajam się za błąd z warunkowym kierunkowym.

Zastanawiam się, czy aby nie lepszym byłoby ewentualne "chwilowe" usunięcie kierunkowego, czyli +XX i pozbawienie ciągu wszelkich znaków innych niż cyfry bo przecież minus lub spacja mogą wystąpić niekoniecznie w podanych miejscach. Normą jest podawanie numerów nie tylko trójkami, ale także parami, a więc także w postaci: +48 503 50 09 99. Może użyć filter_var i zrobić "satanizację"? (IMG:style_emoticons/default/winksmiley.jpg) W ten sposób nawet głupoty w stylu 7f5s-7f7s76 przeczyści do 75-7776 lub napisać samemu funkcję, która obetnie ewentualny kierunkowy i zostawi same cyfry by myślniki i spacje nie robiły bajzlu. No ale to już kwestia potrzeb i własnego pomysłu na przechowywanie numeru.

Ten post edytował thek 2.03.2010, 17:04:36
Go to the top of the page
+Quote Post
pyro
post
Post #3





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Cytat(thek @ 2.03.2010, 16:02:31 ) *
Po pierwsze czy ktoś zwrócił uwagę na fakt, że + jest znakiem specjalnym wyrażeń i nie może być wstawiany ot tak sobie, gdyż oznacza, że poprzedzany element musi wystąpić przynajmniej jeden raz? Inna sprawa, że nawet gdy to poprawisz to nie uwzględniasz, że brak kierunkowego znowu wywali błąd. Ta część ma być opcjonalna, więc bez użycia ? się nie obejdzie.


Czytałeś w ogóle to wyrażenie regularne? I jedno i drugie zostało uwzględnione.

@korey, zobacz to:

  1.  
  2. preg_match('|^(\+[0-9]{2} )?[0-9]{3}-[0-9]{2,3}-[0-9]{2,3}$|' , $szkola_tel )


Ten post edytował pyro 2.03.2010, 16:31:59
Go to the top of the page
+Quote Post

Posty w temacie
- korey   [PHP] Wyrażenie Regularne php   28.02.2010, 11:51:32
- - TNT   + chyba musi być escapowany, spróbuj: Kod^\+...   28.02.2010, 12:50:59
- - korey   Hmm to jakiej funkcji używać.? przerobiłem kod na...   28.02.2010, 13:30:50
- - TNT   preg_match ma inne ograniczniki(?) - nie wiem jak ...   28.02.2010, 14:01:03
- - korey   użyłem twojego kodu i nic. usunąłem trim() i nic. ...   28.02.2010, 14:12:17
- - TNT   Zobacz co u ciebie wyświetli [PHP] pobierz, plaint...   28.02.2010, 14:43:11
- - pyro   Nawet nie patrzyłem na przykłady innych, po prostu...   28.02.2010, 14:52:38
|- - korey   Cytat(pyro @ 28.02.2010, 14:52:38 ) N...   2.03.2010, 15:29:46
- - thek   Po pierwsze czy ktoś zwrócił uwagę na fakt, że + j...   2.03.2010, 16:02:31
|- - pyro   Cytat(thek @ 2.03.2010, 16:02:31 ) Po...   2.03.2010, 16:31:41
- - fifi209   Proszę wyrażenie + przykład: [PHP] pobierz, plain...   2.03.2010, 17:01:47
- - korey   Noo. Użyłem wyrażenia od fifi209 sprawdziłem numer...   3.03.2010, 08:27:49
- - thek   Może to tylko mój pomysł, ale połącz walidację z p...   3.03.2010, 08:56:03
- - korey   Yyyy.. nie rozumiem. ze niby jak?   3.03.2010, 11:46:48
- - thek   FILTER_SANITIZE_URL usuwa wszystkie snaki, które n...   3.03.2010, 13:26:25
- - korey   Napisałem coś takiego: [PHP] pobierz, plaintext /...   6.03.2010, 13:13:32
|- - strife   Cytat(korey @ 6.03.2010, 13:13:32 ) N...   6.03.2010, 13:30:05
- - tr0lit   Musisz posiadać na serwerze wersję PHP 5.2.0, lub ...   6.03.2010, 13:29:02
- - korey   no macie racje.. ;/ To moze mógłby mo ktoś powiedz...   6.03.2010, 15:43:20
- - tr0lit   Ściągnij najnowszą wersję PHP z oficjalnej strony ...   6.03.2010, 20:20:50
- - korey   Pobrałem nową wersje PHP ale nie bardzo wiem jakie...   8.03.2010, 10:20:10
- - Cysiaczek   Nie, to na 99,9% Twoja wina i od tego zacznij :-) ...   8.03.2010, 10:41:43
- - korey   już sobie poradziłem wszystko działa   9.03.2010, 11:31:53


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: 6.10.2025 - 16:14