Cytat(pedro84 @ 24.06.2013, 22:40:38 )

Gotowego kodu nie dostaniesz, na to nie licz

Jedziemy:
- usunięcie niepotrzebnych znaków w ciągu, np.
str_replace (jako argument podajesz tablice), ew.
preg_replace- w kwestii formatu numeru telefonu, znowu wyrażenia regularne i funkcja
preg_match_all. Wydaje mi się jednak, że jakiś format numery przyjąć powinieneś, bo zezwalanie na sieczkę to jak proszenie się o kłopoty.
Dziękuję o to właśnie mi chodziło

Nie potrzebuje gotowego kodu tylko jakiś punkt zaczepienia żeby nie latać po wszystkich funkcjach i doczytywać co daje mi str a co strlen co preg a co str_replace
Co do proszenia się o kłopoty - niestety - podzielam Twoją opinię jednakże dane pobierane są z allegro tak więc nijak nie mam wpływu na to co ludzie wpisują w numerach telefonu.. Chcę to możliwie maksymalnie obrobić tak by sam numer przekazać do SOAP'a wysyłającego sms z potwierdzeniem wpłaty bądź wysyłki..
Ok w zasadzie jakoś to wyszło

Poniżej kod (może komuś następnemu się przyda..)
$sms_telefon = 'Telefon: (+48)516-33-33-22'; //najbardziej hardkorowa wersja jaką znalazłem w bazie :)
$sms_telefon_step1 = substr($sms_telefon, 9
); //ucinamy pierwszych 9 znaków tak by został sam numer
function strReplaceAssoc
(array $replace, $subject) {
}
' ' => '',
'+48' => '',
'-' => '',
'(' => '',
')' => '',
);
$sms_telefon_step2 = strReplaceAssoc($replace, $sms_telefon_step1); //podmieniamy za pomocą funkcji "niepotrzebne śmieci" z numeru telefonu
if(strlen((int
)$sms_telefon_step2) != 9) //sprawdzamy czy numer ma 9 znaków {
$popraw = "podany numer ma wiecej niz 9 znaków i prawdopodobnie nie jest polskim numerem komorkowym"; // error jeżeli nie ma
}
else //dalej jeżeli ma
{
/*tablice z początkami numerów komórkowych poszczególnych operatorów*/
$tab[0
] = array( 725
, 726
); $tab[1
] = array( 7805
, 7806
); $tab[2
] = array( 7870
, 7871
, 7872
, 7873
, 7874
, 7875
, 7878
, 7879
, 788
, 880
, 8841
, 8842
, 886
, 888
, 889
); $tab[4
] = array( 50
, 51
, 7890
, 7891
, 7892
, 7893
, 7894
, 797
, 798
); $tab[5
] = array( 530
, 531
, 533
, 534
, 535
, 5360
, 5361
, 5362
, 5363
, 5364
, 5365
, 5367
, 5368
, 5369
, 5370
, 5371
, 5372
, 5373
, 5374
, 6900
, 6908
, 6909
, 7290
, 729
, 790
, 791
, 792
, 793
, 794
, 7950
, 7956
, 7957
, 7958
, 7959
, 7991
, 7992
, 7993
, 7994
, 7995
, 8812
, 8813
, 8814
, 8815
, 8816
, 8817
, 8830
, 8831
, 8832
, 8834
, 8835
, 8836
, 8837
, 8839
, 8840
, 8843
, 8846
, 8847
, 8848
, 8849
); $tab[6
] = array( 601
, 603
, 605
, 607
, 609
, 661
, 663
, 665
, 667
, 669
, 691
, 693
, 695
, 697
, 721
, 7220
, 7221
, 7222
, 7223
, 7226
, 7227
, 723
, 724
, 781
, 782
, 7830
, 7831
, 7832
, 7834
, 7835
, 7836
, 7837
, 7838
, 7839
, 785
, 885
); $tab[8
] = array( 532
, 538
, 539
, 600
, 602
, 604
, 606
, 608
, 660
, 662
, 664
, 6660
, 6661
, 6662
, 6663
, 6664
, 6665
, 6667
, 6668
, 6669
, 668
, 692
, 694
, 696
, 698
, 7281
, 7282
, 7283
, 7284
, 7285
, 7286
, 7287
, 7288
, 7289
, 784
, 7876
, 7877
, 7951
, 7952
, 7953
, 7954
, 7955
, 8810
, 8818
, 8819
, 8833
); $tab[9
] = array( 7272
, 7273
, 8822
);
$poprawne = 0;
for($i=0;$i<10;$i++) //sprawdzamy czy numer znajduje sie w tabliach
{
$ilosc = count($tab[$i]); for($j=0;$j<$ilosc;$j++)
{
$wynik = substr($sms_telefon_step2, 0
, $ile); if($wynik==$tab[$i][$j]) // jeżeli znajduje się
{
echo "<strong>Podany numer to numer komórkowy </strong>"; $poprawne = 1;
}
}
}
if($poprawne !=1) //jeżeli nie znajduje się
{
echo "<strong>Podanego numeru nie ma w tablicy!</strong>"; }
}
//echo($sms_telefon_step2);
Generalnie kod to zlepek kilku różnych przykładów z manuali podanych w postach wyżej + klika wygooglowanych porad - wszystko połączyłem razem i.. Generalnie u mnie działa poprawnie i jak najbardziej sie sprawdza - jeżeli gdzieś widzicie błąd albo coś jest źle to chętnie poćwiczę inne metody

)