Parsiranje telefonskog broja
Možda neko već ima iskustva pa da priupitam, postoji li neka klasa i sl. koja bi pravilno parsirala telefonske brojeve kako bi se razdvojili pozivni za zemlju, lokalni pozivni i broj telefona, dakle da od +3816499234344 dobijem 381 64 99234344 razdvojeno. Naravno, da su svi na 381 bilo bi jednostavno, jesu većinom, ali ne svi. :) Takođe nema nekog pravila, brojevi mogu biti i samo lokalni, tipa 064444333 bez poziva za zemlju, ili npr. neko piše 00 na početku kao izlaz i sl.
Dakle dobijam raznorazne brojeve, a nekako bi da ih formatriram što bolje i uniformno. Ima neko neku ideju ili klasu ili da krenem peške od početka da pravim neki konvertor/parser? |
uh uh. ja sam odustao svojevremeno od te ideje. Ima i problem što broj može da bude šestocifren, sedmocifren. Učinilo mi se da nema ni jedna konstanta za koju možeš da se uhvatiš.
Ako nađeš neko rešenje budi ljubazan pa podeli :) |
ja sam imao neke perl klase koje su prepoznavale tel. brojeve, uglavnom su bile uspesne... probacu da ih pronadjem na backupu, nisam sa tim radio godinama
U susutini nije to nuklearna fizika (ali je dosadan posao), samo treba pokriti vecinu standardnih nacina pisanja i samo se na njih koncentrise, ostale slucajeve samo markiras i resavas ih rucno. Po nekom mom iskustvu cim ima vise od 20-tak tih za rucno resavanje, mozes da nadjes neko pravilo i malo doradis logiku da ih handluje automatski, tako da na kraju kroz par iteracija skripta "nauci" da odradi 99% slucajeva... EDIT: Ja sam koristio podatke sa ovog linka da bih znao koliko cifara ide u numeraciju u kojoj zemlji. To su zvanicni podaci za sve zemlje, a ti pokupis naravno one koje te zanimaju (meni je npr. trebala samo EU i US). Pobrisi sve delimiters i onda mozes da proveris relativno brzo na osnovu broja cifara jel to samo broj ili ima i area code ili je full broj. Za granicne slucajeve proveris jel postoji taj country i area code i da li se broj preostalih cifara uklapa u numeraciju... ne mozes uvek da budes 100% siguran, ali to cesto ne mozes ni rucno :) |
Ti hoćeš da parsiraš Long number - http://en.wikipedia.org/wiki/Long_number
Klasa za tako nesto ne postoji, ali je uvek možeš napraviti. Prvo ti treba lista svih CountryCod-ova http://www.wtng.info/wtng-ctn.html (-npr.) posle za svaki CountryCode treba da imaš listu operatera u toj zemlji, to možeš uzeti ako parsiraš informacija sa nekih od sajtova kao što je clickatell.com i sl. ima ih dosta. Postoji zvaničan format brojeva koji je u formatu 381631234567, bez + bez ' ' ili bilokakvih karaktera pa trimuj sve svoje brojeve. Standard se može se naći negde na vikipediji. Kad imas sve te informacije možeš krenuti da pišes klasu koja ih koristi :) .... Ceo broj možđe imati od 6 do 16 cifara, nisam 100% siguran i to možeš naći na wikipediji. |
|
Ja našao dva gema za ruby, mora da ima i nešto za PHP, u krajnjoj liniji, možeš "pozajmiti" config neke od postojećih pa odraditi samo kod :)
https://github.com/habermann24/phone...ta/regions.yml |
Citat:
https://github.com/davideme/libphonenumber-for-PHP Videću kako radi. |
Vreme je GMT +2. Trenutno vreme je 05:30. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.