Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak sprawdzić numer telefonu
Forum PHP.pl > Forum > Przedszkole
redelek
Witam,

Mam formularz w którym jest pole numer telefonu.
Chcę go tak ustawić, że jeżeli jest pusty wstawia wartość domyślną do bazy. Jeśli coś jest wpisane choć by jeden znak zaczyna sprawdzać czy jest
telefon poprawnie wpisany.

To moja kombinacja

  1. <?php
  2. if (strlen($tel)==0) {
  3. $tel='(022)622-22-22';
  4. }else{
  5. if (strlen($tel)<14 or strlen($tel)>14
  6.  or !eregi("^[0-9()-]+$",$tel)) { $blad++;
  7. echo "<span style=\"color:red;\">Błąd w podawaniu numeru telefonu. Przykład: (022)622-22-22</span><br />";
  8. }
  9.  
  10. }
  11. ?>


Prawie działa, nie sprawdza mi czy są nawiasy i myślniki tylko liczy do 14 cyfr.
Macie może jakiś na to pomysł ?

Pozdrawiam
Redelek
piotrekkr
  1. <?php
  2. preg_match('/(0[1-9]{2})[0-9]{3}-[0-9]{2}-[0-9]{2}/', $tel);
  3. ?>
redelek
Cytat(piotrekkr @ 11.07.2008, 12:06:59 ) *
  1. <?php
  2. preg_match('/(0[1-9]{2})[0-9]{3}-[0-9]{2}-[0-9]{2}/', $tel);
  3. ?>


Zrobiłem jak pokazałeś
  1. <?php
  2. if (strlen($tel)==0) {
  3. $tel='(022)622-22-22';
  4. }else{
  5. if (strlen($tel)>0
  6.  or preg_match('/(0[1-9]{3})[0-9]{3}-[0-9]{2}-[0-9]{2}/', $tel)) { $blad++;
  7. echo "<span style=\"color:red;\">Błąd w podawaniu numeru telefonu. Przykład: (022)622-22-22</span><br />";
  8. }
  9.  
  10. }
  11. ?>

to w ogóle mnie nie chce puścić i wyświetla błąd cały czas.
Sorki może już za długo nad tym siedzę i już prostych rzeczy nie widzę smile.gif
Shili
Kod
preg_match('/\(0[1-9]{2}\)[0-9]{3}-[0-9]{2}-[0-9]{2}/', $tel))
?
piotrekkr
  1. <?php
  2. if (strlen($tel)==0) {
  3. $tel='(022)622-22-22';
  4. }else if(!preg_match('/(0[1-9]{3})[0-9]{3}-[0-9]{2}-[0-9]{2}/', $tel)) { 
  5. $blad++;
  6. echo "<span style=\"color:red;\">Błąd w podawaniu numeru telefonu. Przykład: (022)622-22-22</span><br />";
  7. }
  8.  
  9. ?>
bogdan89
ja w ramach tego tematu chciałem dodać tylko, że wygodniej (moim zdaniem) robić takie sprawdzanie w JavaScript przed wysłaniem formularza... bo co jeśli wszystko inne jest wpisane ok, a numer tel. jest zly...? W takim przypadku (jesli tworzona strona ma byc "dla uzytkownika") musisz przechowywac gdzies ta reszte danych, zeby za kazdym razem kiedy sie gdzies nieznacznie ktos pomyli, nie musial wpisywac wszystkich danych od początku... Pomysl o tym i wybierz wygodniejsze rozwiazanie...
redelek
Cytat(piotrekkr @ 11.07.2008, 12:49:41 ) *
  1. <?php
  2. if (strlen($tel)==0) {
  3. $tel='(022)622-22-22';
  4. }else if(!preg_match('/(0[1-9]{3})[0-9]{3}-[0-9]{2}-[0-9]{2}/', $tel)) { 
  5. $blad++;
  6. echo "<span style=\"color:red;\">Błąd w podawaniu numeru telefonu. Przykład: (022)622-22-22</span><br />";
  7. }
  8.  
  9. ?>


Za cholerę nie idzie cały czas zwraca mi błąd ten mój oczywiści
piotrekkr
obcielo '\' znak na forum nie wiem czemu wklej sobie takie cos :
Kod
/\(0[1-9]{3}\)[0-9]{3}-[0-9]{2}-[0-9]{2}/
redelek
Cytat(piotrekkr @ 11.07.2008, 12:59:04 ) *
obcielo '\' znak na forum nie wiem czemu wklej sobie takie cos :
Kod
/\(0[1-9]{3}\)[0-9]{3}-[0-9]{2}-[0-9]{2}/



Nadal nie puszcza. Zrobiłem już oddzielny plik bo może w moim skrypcie coś jest pokopane, ale jest to samo

  1. <?php
  2.  
  3. $tel='(022)666-44-47';
  4. if (strlen($tel)>0
  5.  || preg_match("/(0[1-9]{3})[0-9]{3}-[0-9]{2}-[0-9]{2}/",$tel)) { $blad++;
  6. echo "<span style=\"color:red;\">Błąd w podawaniu numeru telefonu. Przykład: (022)622-22-22</span><br />";
  7. }else{
  8.  
  9. echo "GOOOD!!!!";
  10. }
  11.  
  12.  ?>
Shili
Kurcze, przeanalizowałam od samego początku i masz całkowicie kopnięty warunek.

  1. <?php
  2. if (strlen($tel)>0
  3.  || preg_match("/(0[1-9]{3})[0-9]{3}-[0-9]{2}-[0-9]{2}/",$tel))
  4. ?>

Jeśli długość jest większa od zera lub ciąg pasuje do wyrażenia wyświetlasz błąd!

  1. <?php
  2.  
  3. $tel='(022)666-44-47';
  4. if (strlen($tel)<=|| !preg_match("/(0[1-9]{2})[0-9]{3}-[0-9]{2}-[0-9]{2}/",$tel)) {
  5. $blad++;
  6. echo "<span style=\"color:red;\">Błąd w podawaniu numeru telefonu. Przykład: (022)622-22-22</span><br />";
  7. }
  8. else{
  9. echo "GOOOD!!!!";
  10. }
  11.  
  12.  ?>


@edit
Swoją drogą przy tak sformułowanym wyrażeniu regularnym możesz sobie spokojnie podarować sprawdzanie długości, wyrażenie też to robi winksmiley.jpg

@edit2
Zeżarło mi backslashe
redelek
Cytat(Shili @ 11.07.2008, 13:37:56 ) *
Jeśli długość jest większa od zera lub ciąg pasuje do wyrażenia wyświetlasz błąd!

Odwrotnie też próbowałem i jest taki sam efekt wyświetla się GOOD cały czas nawet jak jest śle

  1. <?php
  2.  
  3. $tel='(022)663-84-47';
  4.  
  5. if (strlen($tel)>|| !preg_match("/(0[1-9]{3})[0-9]{3}-[0-9]{2}-[0-9]{2}/",$tel)) {
  6.  
  7. echo "GOOOD!!!!";
  8.  
  9. }else{
  10. echo "<span style=\"color:red;\">Błąd w podawaniu numeru telefonu. Przykład: (022)622-22-22</span><br />";
  11.  
  12.  
  13. }
  14. ?>
Shili
Zwróciłeś uwagę na różnice między moim kodem, a Twoim?

Kurcze, trochę logicznego myślenia - przetłumaczę Twój warunek i potem swój:
Kod
if (strlen($tel)>0 || !preg_match("/\(0[1-9]{3}\)[0-9]{3}-[0-9]{2}-[0-9]{2}/",$tel)) {
Jeśli długość jest większa od zera lub wyrażenie nie pasuje do regExpa wyświetl good.

Lub znaczy że przynajmniej jeden z tych warunków jest spełniony - u Ciebie jest, bo długość jest większa od zera i notabene wyrażenie nie pasuje do wzorca.

Kod
  if (strlen($tel)<=0 || !preg_match("/\(0[1-9]{2}\)[0-9]{3}-[0-9]{2}-[0-9]{2}/",$tel)) {
Jeśli długość jest równa zeru (lub mniejsza, z rozpędu mi się napisało) lub wyrażenie nie pasuje do wzorca wyświetl błąd.

Jeśli przynajmniej jedno z tych nie jest spełnione - wyświetlany jest błąd.
Ale nie baw się w te ory, andy i tak dalej, a wyrzuć spokojnie sprawdzanie długości. Niepotrzebne jest. I przeanalizuj przykłady
redelek
Cytat(Shili @ 11.07.2008, 13:57:03 ) *
Zwróciłeś uwagę na różnice między moim kodem, a Twoim?

Kurcze, trochę logicznego myślenia - przetłumaczę Twój warunek i potem swój:
Kod
if (strlen($tel)>0 || !preg_match("/\(0[1-9]{3}\)[0-9]{3}-[0-9]{2}-[0-9]{2}/",$tel)) {
Jeśli długość jest większa od zera lub wyrażenie nie pasuje do regExpa wyświetl good.

Lub znaczy że przynajmniej jeden z tych warunków jest spełniony - u Ciebie jest, bo długość jest większa od zera i notabene wyrażenie nie pasuje do wzorca.

Kod
  if (strlen($tel)<=0 || !preg_match("/(0[1-9]{2})[0-9]{3}-[0-9]{2}-[0-9]{2}/",$tel)) {
Jeśli długość jest równa zeru (lub mniejsza, z rozpędu mi się napisało) lub wyrażenie nie pasuje do wzorca wyświetl błąd.

Jeśli przynajmniej jedno z tych nie jest spełnione - wyświetlany jest błąd.
Ale nie baw się w te ory, andy i tak dalej, a wyrzuć spokojnie sprawdzanie długości. Niepotrzebne jest. I przeanalizuj przykłady


Troszkę nie ( przepraszam ), ale nawet Twój kod nie działa, cały czas wyświetla błąd pomimo podania poprawnego numeru

OOO działa TROSZKĘ POPRAWIŁEM I DZIAŁA. DZIĘKI PANOWIE ZA POMOC I ZA ZAINTERESOWANIE exclamation.gif!!!
Shili
U mnie nie wyświetla błędu.

Jeszcze raz
  1. <?php
  2.  
  3. $tel='(022)666-f44-47';
  4. if (!preg_match("/(0[1-9]{2})[0-9]{3}-[0-9]{2}-[0-9]{2}/",$tel)) {
  5. $blad++;
  6. echo "<span style=\"color:red;\">Błąd w podawaniu numeru telefonu. Przykład: (022)622-22-22</span><br />";
  7. }
  8. else{
  9. echo "GOOOD!!!!";
  10. }
  11.  
  12.  ?>

Sprawiłam parę razy u siebie - teraz wyświetli błąd, bo numer jest niepoprawny. Jak usuniesz to f wyświetli good. Przynajmniej na moim serwerze
redelek
Cytat(Shili @ 11.07.2008, 14:08:27 ) *
U mnie nie wyświetla błędu.

Jeszcze raz
  1. <?php
  2.  
  3. $tel='(022)666-f44-47';
  4. if (!preg_match("/(0[1-9]{2})[0-9]{3}-[0-9]{2}-[0-9]{2}/",$tel)) {
  5. $blad++;
  6. echo "<span style=\"color:red;\">Błąd w podawaniu numeru telefonu. Przykład: (022)622-22-22</span><br />";
  7. }
  8. else{
  9. echo "GOOOD!!!!";
  10. }
  11.  
  12.  ?>

Sprawiłam parę razy u siebie - teraz wyświetli błąd, bo numer jest niepoprawny. Jak usuniesz to f wyświetli good. Przynajmniej na moim serwerze


Dzięki już działa

  1. <?php
  2. $tel='022)666-44-47';
  3. if (strlen($tel)<=|| preg_match("/(0[1-9]{2})[0-9]{3}-[0-9]{2}-[0-9]{2}/",$tel)) {
  4. //$blad++;
  5. //echo "<span style=\"color:red;\">Błąd w podawaniu numeru telefonu. Przykład: (022)622-22-22</span><br />";
  6. echo "GOOOD!!!!";
  7. }
  8. else{
  9. $blad++;
  10. echo "<span style=\"color:red;\">Błąd w podawaniu numeru telefonu. Przykład: (022)622-22-22</span><br />";
  11. }
  12.  
  13.  ?>

Tak działa jak złoto exclamation.gif!! nie ma jednego minusa i wywala błąd DZIĘKI
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.