![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 362 Pomógł: 27 Dołączył: 14.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Mam formularz z 4 polami:
Telefon, Telefon dodatkowy, Checkbox1, Checkbox2 Czy ma ktoś klasę sprawdzającą numer komórkowy? Chodzi mi o to, aby w przypadku wpisania w pole Telefon lub Telefon dodatkowy numeru komórkowego(nie stacjonarnego)uaktywniły się oba checkboxy. Musiało by to sprawdzać czy numer pasuje do wzorca: '505505505' lub '48505505505' Będę wdzięczny za wskazówki (IMG:style_emoticons/default/smile.gif) |
|
|
![]() |
![]()
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 ![]() |
Nie można na pałę wycinać 48! To kierunkowy na mazowieckie!
1. Trzeba wywalić wszystko co nie jest cyfrą. 2. Sprawdzić długość ciągu. 3. Jeśli ciąg ma 13 cyfr to tniemy 2 pierwsze i następne 11 zapisujemy do dalszej obróbki. Jeśli 2 pierwsze to '00' idziemy do kroku 4. Jeśli nie - to nie jest prawidłowy numer telefoniczny. 4. Jeśli ciąg ma 11 cyfr to tniemy 2 pierwsze i pozostałe 9 to numer. Możemy owe 2 pierwsze wykorzystać do określenia kraju. Jeśli nie jest on w tablicy, która zawiera kierunkowe do innych krajów - to nie jest prawidłowy numer telefoniczny międzynarodowy. Jeśli jest to 48 -> idziemy do kroku 5, jeśli nie to koniec bo chyba nie będziesz walidował numerów dla każdego kraju z osobna (IMG:style_emoticons/default/biggrin.gif) 5. Jeśli ciąg ma 9 cyfr tniemy 2 pierwsze i porównujemy z kierunkowymi miast by określić czy jest to stacjonarny. Jeśli wyjdzie prawda to mamy do czynienia ze stacjonarnym. Możemy też wyciąć 3 pierwsze i porównać do numerów początkowych sieci komórkowych. Jeśli tutaj trafimy to wiemy, że mamy do czynienia z komórką. Co jest fajne w tym algorytmie? Kaskadowość (IMG:style_emoticons/default/winksmiley.jpg) Kto nie wie o co mi chodzi niech sprawdzi jak działa switch gdy żaden z case nie posiada break umieszczając w każdym z case jakieś echo (IMG:style_emoticons/default/winksmiley.jpg) Tutaj też to można zastosować. Tylko zwróć uwage na jedno... W tej funkcji nie możesz zwracać wartości true i false jedynie. Bo numerów międzynarodowych nie możesz tak podzielić. To powinna być funkcja w stylu validPhone, która zwraca: false dla errora, international dla międzynarodowego, polStat dla polskiego stacjonarnego i polMob dla polskiej komórki lub jakiś odpowiednik tego, przykładowo numeryczny 0 -error, 1 - międzynarodowy i tak dalej. Bym zapomniał. Po co masz szaleć z wyrażeniami regularnymi co sugeruje pablo, skoro możesz wykorzystać prostsze in_array?
Powód edycji: [thek]:
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 143 Pomógł: 19 Dołączył: 7.09.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Nie można na pałę wycinać 48! To kierunkowy na mazowieckie! Ale przy numerze +48481112223 wycinajac "48" 2 razy, zostaje CI 7 cyfr, i automatycznie numer jest odrzucony bo nie jest komórkowym....jeśli raz to i tak jest odrzucony bo w w/w preze mnie sposobie realizacji tego problemu są porównywane równiez i te początki... @thek: pewnie że można (IMG:style_emoticons/default/smile.gif) rozwiązań jest multum, przedstawione przeze mnie to tylko opcja Wydaje mi się żę rozwiązanie z wyr. regularnym będzie szybsze niż wycinanie znaków, sprawdzanie tablic...a na pewno krótsze (IMG:style_emoticons/default/smile.gif) Ten post edytował pablo89pl 20.08.2010, 12:28:30 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 11:36 |