ray Posted September 30, 2012 Report Share Posted September 30, 2012 Ir tāda problēma, ka vajadzētu preg_match telefona numuram, bet nu par regular expressions izpratne diemžēl nav un meklējot netā neizdodas atrast to ko vajag. Tātad vajadzētu izveidot regular expression telefona numuram, kuram iespējamie varianti būtu šādi: +371 87654321 +37187654321 37187654321 0037187654321 87654321 Varbūt kāds var palīdzēt? Quote Link to comment Share on other sites More sharing options...
briedis Posted September 30, 2012 Report Share Posted September 30, 2012 Zini tādu funkciju substr() ? Zini vēl tādu strlen()? Nu lūk, uztaisi skriptu, kas pārbauda vai pirmais simbols ir "+" Un tālāk iet cikls, kas pārbauda, vai pārējie simboli ir skaitļi vai atstarpes. Tāds brutālais variants, bet vismaz būsi izdarījis pats :) Quote Link to comment Share on other sites More sharing options...
Grey_Wolf Posted October 1, 2012 Report Share Posted October 1, 2012 kas pārbauda vai pirmais simbols ir "+" Un tālāk iet cikls, kas pārbauda, vai pārējie simboli ir skaitļi vai atstarpes. pirmais simbols "+" vai skaitlis.. Quote Link to comment Share on other sites More sharing options...
F3llony Posted October 1, 2012 Report Share Posted October 1, 2012 You people, are ridiculous. <?php function validate_phone_lv($phone) { $phone = floatval(preg_replace('/[^0-9]/', '', $phone)); if (($phone > 37100000000 && $phone < 37199999999) || ($phone > 10000000 && $phone < 99999999)) { return true; } else { return false; } } $test = array( '+37198273647', '37198273647', '0098273647', '00 98 27 36 47', '+00 98273647 :*', '8273647', //Short '238488872' //Long ); foreach ($test as $num) { var_dump(validate_phone_lv($num)) . PHP_EOL; } Quote Link to comment Share on other sites More sharing options...
v3rb0 Posted October 1, 2012 Report Share Posted October 1, 2012 (edited) if (<true>) { return true; } else { return false; } druās acīs :p un vai šis ir valīds nr: -3q7w1e9r8t2y7u3i6o4p7! Edited October 1, 2012 by v3rb0 Quote Link to comment Share on other sites More sharing options...
F3llony Posted October 1, 2012 Report Share Posted October 1, 2012 if (<true>) { return true; } else { return false; } druās acīs :p un vai šis ir valīds nr: -3q7w1e9r8t2y7u3i6o4p7! Un kur ir problēma? Tu gribēji, lai es evaluēju pret false un pēc noklusējuma agriežu true? Ko tas maina, pēc tavām domām? Un kapēc lai tas nebūtu valids numurs? :> Kuru gluži interesē, kā numurs tiek ievadīts, mērķis ir dabūt numuru. Jeb es kļūdos? Ķipa, "paroles laukā nedrīkst būt speciālie simboli" loģika? :> Quote Link to comment Share on other sites More sharing options...
v3rb0 Posted October 1, 2012 Report Share Posted October 1, 2012 evaluēt? return <tās kas ifā>; maina to, ka neraksti nevajadzīgu ifu, kods tīrāks. topica autora piemēros nav nr kur valīdam nr starp cipariem ir dajebkādi simboli, kas kas nav cipari. Quote Link to comment Share on other sites More sharing options...
F3llony Posted October 1, 2012 Report Share Posted October 1, 2012 Nākošreiz, speciāli tev, sarakstīšu visu kodu maksimāli garā desā, koda tīrības labad, un paskatīsimies cik ilgi tev prasīs saprast kas tur īsti notiek. OP mums izskatās programmēšanas guru, viņam būs ļoti viegli saprast, kas tur sadrukāts. Nemaz nerunājot par to no pakaļas izvilkto "tīrāks kods" argumentu... The universe doesn't always give you what you want. It gives you what you need. Quote Link to comment Share on other sites More sharing options...
v3rb0 Posted October 1, 2012 Report Share Posted October 1, 2012 visi citi vainīgi :D Quote Link to comment Share on other sites More sharing options...
F3llony Posted October 1, 2012 Report Share Posted October 1, 2012 visi citi vainīgi :D Quote Link to comment Share on other sites More sharing options...
ray Posted October 1, 2012 Author Report Share Posted October 1, 2012 ar preg_match šitādu telefona numuru nav iespējams pārbaudīt? Quote Link to comment Share on other sites More sharing options...
F3llony Posted October 1, 2012 Report Share Posted October 1, 2012 Protams, ka ir iespējams. Pārbaudi, vai virkne sākas ar 00 vai +, tad seko 13 simboli izņemot atstarpes vai 8 simboli ja nav 00 vai + izņemot atstarpes :D Quote Link to comment Share on other sites More sharing options...
v3rb0 Posted October 1, 2012 Report Share Posted October 1, 2012 (edited) /^(\+{0,1}371\s{0,1}\d{8}|0{2}371\d{8}|\d{8})$/ opcionāls +, 371, opcionāla viena atstarpe, 8 cipari vai arī divas 0, 371, 8 cipari vai arī 8 cipari. ja vajag arī citu valstu, tad 371 aizvieto ar grupu kurā uzskaitīti atļauto valstu kodi (371|372|..|999), vai ja kods nav svarīgs, tad vnk \d{3} Edited October 1, 2012 by v3rb0 Quote Link to comment Share on other sites More sharing options...
draugz Posted October 1, 2012 Report Share Posted October 1, 2012 /^((\+|00)?(\d{3})?\s?\d{8,})$/ Ideja tāda pati kā v3rb0, tikai par valīdu tiks uzskatīts arī 00 371 12345678 Ja aizvāc to komatu pie \d{8,} tad varēs būt tikai 8 ciparu numurs, pretējā gadījumā tam jābūt vismaz 8 simboli. Quote Link to comment Share on other sites More sharing options...
briedis Posted October 1, 2012 Report Share Posted October 1, 2012 Reāli ir tolks baigi iespringt par to validāciju? Numuru prasa lietotāja interesēs. Pats vainīgs, ja norādīts nepareizu. Ok, tev vajag viņa pareizo numuru. Ko darīt, ja numurs valīds bet nederīgs? Efekts tas pats, kas ja vienkārši muļķības būtu ierakstītas. Es darītu tā - izmetam visu, kas nav cipari, atstarpes, "+", normalizējam atstarpes (ja vairākas pēc kārtas, aizstājam ar vienu). Un skatamies,vai numurs nav par īsu, citādāk izmetam kļūdu. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.