Discussione:
Verifica numero di cellulare
(troppo vecchio per rispondere)
Daniele
2018-02-07 17:17:11 UTC
Permalink
Ciao a tutti,
forse e' una banalita' ma non riesco ad uscirne.
Dato che la mia applicazione invia degli sms di avviso, ho la necessita' di
validare il numero appena digitato.
Il gateway che uso (skebby) richiede il numero di cellulare con il prefisso
internazionale senza il + o il doppio zero (00) perche' il + lo mette lui
(skebby) di default.
Cosa facilmente risolvibile ...... se ci sono !!!!; infatti se il + o il 00
sono presenti li tolgo e tutto funziona.
Il problema e' se non ci sono, a volte (IL PIU' DELLE VOLTE) il numero dove
inviare l'sms viene digitato senza il +39 o il 39 (se non mettono il +
figurarsi il 39), quindi il risultato e' un'invio errato.
Come posso fare per validare un numero di cellulare ??
Teniamo presente che i numeri non hanno tutti la stessa lunghezza, quelli
attuali hanno 10 numeri (senza +39), i piu' vecchi 9 o 8 (ne ho trovato uno
solo con 8, ma con 9 diversi).
Inoltre ci sono diversi prefissi per telefonia fissa che assomigliano ai
prefissi del mobile (0331 con 331 0332 con 332 0321 con 321 ecc...) che
possono essere erroneamente digitati dall'operatore.

L'unica alternativa che sto cercando di utilizzare e' una maschera
preimpostata in un tedit ...
Oppure l'inserimento del solo numero di cellulare tenendo fuori (e
aggiungendolo dopo) il prefisso internazionale.

Suggerimenti??

Grazie

Daniele
Antò LuZombi
2018-02-07 17:46:55 UTC
Permalink
Post by Daniele
Ciao a tutti,
  forse e' una banalita' ma non riesco ad uscirne.
Dato che la mia applicazione invia degli sms di avviso, ho la necessita'
di validare il numero appena digitato.
Il gateway che uso (skebby) richiede il numero di cellulare con il
prefisso internazionale senza il + o il doppio zero (00) perche' il + lo
mette lui (skebby) di default.
Cosa facilmente risolvibile ...... se ci sono !!!!; infatti se il + o il
00 sono presenti li tolgo e tutto funziona.
Il problema e' se non ci sono, a volte (IL PIU' DELLE VOLTE) il numero
dove inviare l'sms viene digitato senza il +39 o il 39 (se non mettono
il + figurarsi il 39), quindi il risultato e' un'invio errato.
Come posso fare per validare un numero di cellulare ??
Teniamo presente che i numeri non hanno tutti la stessa lunghezza,
quelli attuali hanno 10 numeri (senza +39), i piu' vecchi 9 o 8 (ne ho
trovato uno solo con 8, ma con 9 diversi).
Inoltre ci sono diversi prefissi per telefonia fissa che assomigliano ai
prefissi del mobile (0331 con 331 0332 con 332  0321 con 321 ecc...) che
possono essere erroneamente digitati dall'operatore.
L'unica alternativa che sto cercando di utilizzare e' una maschera
preimpostata in un tedit ...
Oppure l'inserimento del solo numero di cellulare tenendo fuori (e
aggiungendolo dopo) il prefisso internazionale.
Suggerimenti??
prova con le espressioni regolari
Post by Daniele
Grazie
Daniele
--
Oggi c'e' una grande battaglia di idee,
ma alla fine non ci saranno ne vinti,
ne vincitori, ne idee! S. Benni da Elianto.
Giacomo Degli Esposti
2018-02-09 10:13:09 UTC
Permalink
Post by Daniele
Ciao a tutti,
forse e' una banalita' ma non riesco ad uscirne.
Dato che la mia applicazione invia degli sms di avviso, ho la necessita' di
validare il numero appena digitato.
Il gateway che uso (skebby) richiede il numero di cellulare con il prefisso
internazionale senza il + o il doppio zero (00) perche' il + lo mette lui
(skebby) di default.
Cosa facilmente risolvibile ...... se ci sono !!!!; infatti se il + o il 00
sono presenti li tolgo e tutto funziona.
Il problema e' se non ci sono, a volte (IL PIU' DELLE VOLTE) il numero dove
inviare l'sms viene digitato senza il +39 o il 39 (se non mettono il +
figurarsi il 39), quindi il risultato e' un'invio errato.
Come posso fare per validare un numero di cellulare ??
Teniamo presente che i numeri non hanno tutti la stessa lunghezza, quelli
attuali hanno 10 numeri (senza +39), i piu' vecchi 9 o 8 (ne ho trovato uno
solo con 8, ma con 9 diversi).
Inoltre ci sono diversi prefissi per telefonia fissa che assomigliano ai
prefissi del mobile (0331 con 331 0332 con 332 0321 con 321 ecc...) che
possono essere erroneamente digitati dall'operatore.
L'unica alternativa che sto cercando di utilizzare e' una maschera
preimpostata in un tedit ...
Oppure l'inserimento del solo numero di cellulare tenendo fuori (e
aggiungendolo dopo) il prefisso internazionale.
Suggerimenti??
Intanto avvisare l'utente che il numero di telefono va inserito in un dato
formato altrimenti non e' garantito che funzioni... :-)

Poi, se non puoi fare affidamento sul numero di cifre perche' i vecchi numeri sono piu' corti... direi di fare una serie di controlli sulla parte
iniziale, correggendo gli errori piu' comuni:

se comincia per '+' toglilo
se comincia per '0039' togli '00'
se comincia per 39 va bene
se comincia per 3x con x <> 9 aggiungi '39'
se comincia per 03x con x <> 9 togli '0' e aggiungi '39'
e cosi' via...

E poi sperare che cosi' funzioni! :(

Giacomo

PS. io avevo letto che i numeri di cellulare sono sempre di 7 cifre
(+ 3 di prefisso) sei sicuro che ci siano numeri piu' corti (e che
non siano errori di inserimento) ?
Luigi
2018-02-09 10:34:52 UTC
Permalink
Post by Giacomo Degli Esposti
Poi, se non puoi fare affidamento sul numero di cifre perche' i vecchi numeri sono piu' corti... direi di fare una serie di controlli sulla parte
se comincia per '+' toglilo
se comincia per '0039' togli '00'
se comincia per 39 va bene
se comincia per 3x con x <> 9 aggiungi '39'
se comincia per 03x con x <> 9 togli '0' e aggiungi '39'
e cosi' via...
E poi sperare che cosi' funzioni! :(
Condivido.
Post by Giacomo Degli Esposti
PS. io avevo letto che i numeri di cellulare sono sempre di 7 cifre
(+ 3 di prefisso) sei sicuro che ci siano numeri piu' corti (e che
non siano errori di inserimento) ?
Confermo che ci sono numeri di cellulare più corti.

Ciao.
Daniele
2018-02-09 11:09:57 UTC
Permalink
Ciao Giacomo,
grazie per la risposta.
Il problema non e' della persona a cui si manda il messaggio .... il
problema e' degli operatori.
Sono solo 4, ma ognuno di noi ha il suo modo di inserire il numero di
cellulare.
Io, per esempio, sono abituato a mettere il +39 davanti, gli altri no !!!!
Se va bene mettono il 39, a volte 0039......
Non e' di facile soluzione, ho trovato dei siti dove (dicono) sia possibile
verificare qualsiasi numero di cellulare! ma richiedono una registrazione e
d un abbonamento.

Ho utilizzato questa "strategia", ho messo nelle configurazioni principali
il campo "prefisso internazionale", quando si inserisce il numero di
telefono per l'invio del messaggio se l'edit e' vuoto allora metto il
prefisso internazionale (nel nostro caso +39), se il numero (per qualsiasi
motivo) e' gia' presente controllo l'esistenza del +39 con
pos('+39',NumTel)=1 se e' e' falso .... avviso che il numero non e' valido.
Spartano .... ma per ora regge (per ora ..... la procedura e' stata fatta
ieri .... vediamo cosa succede nei prossimi giorni),
Post by Giacomo Degli Esposti
PS. io avevo letto che i numeri di cellulare sono sempre di 7 cifre
(+ 3 di prefisso) sei sicuro che ci siano numeri piu' corti (e che
non siano errori di inserimento) ?
I piu' vecchi (per indenderci i primi gms) hanno meno cifre.
Ora, non so quanti ancora ce ne sono ..... ma esistono!!

Grazie ancora

Ciao

Daniele
a***@gmail.com
2018-02-10 17:39:24 UTC
Permalink
Post by Giacomo Degli Esposti
se comincia per '+' toglilo
se comincia per '0039' togli '00'
se comincia per 39 va bene
se comincia per 3x con x <> 9 aggiungi '39'
se comincia per 03x con x <> 9 togli '0' e aggiungi '39'
e cosi' via...
[...]

Nah, per questa roba si usano le regex.
Roba simile: https://regex101.com/r/yF7bZ0/1
alessandrob
2018-02-11 14:56:44 UTC
Permalink
Secondo me puoi anche utilizzare le espressioni regolari, però comunque prima devi capire cosa vuoi fare.

Quindi l'elenco dei casi lo devi prevedere comunque.

Io proverei a fare queste considerazioni sulle regole:

I numeri di cellulare italiani iniziano per 3
Quindi, almeno per l'italia hai tre casi:
++393...
00393...
3...

I numeri esteri devono essere sempre preceduti dal prefisso estero, che deve essere per forza del tipo (sono due casi):
++NNN...
00NNN...

Qui forse ti conviene cercare un elenco dei prefissi internazionali... (se ne vale la pena)

Non vedo altri casi da dover gestire

Circa la lunghezza dei numeri, i vecchi GSM (ricordi lontani quando un telefono pesava un kg...) effettivamente avevano una dimensione di 6 cifre (più prefisso).
Ora tutti i numeri hanno una lunghezza di 7 (più prefisso)
a***@gmail.com
2018-02-12 23:37:58 UTC
Permalink
Post by alessandrob
Secondo me puoi anche utilizzare le espressioni regolari, però comunque prima devi capire cosa vuoi fare.
La regex a quel link copre i casi che servono.
Daniele
2018-02-13 08:53:34 UTC
Permalink
Ciao Andrea,
Post by a***@gmail.com
Nah, per questa roba si usano le regex.
Roba simile: https://regex101.com/r/yF7bZ0/1
Grazie per l'aiuto ...
Onestamente non sapevo l'esistenza di questo strumento .... che non sembra
cosi' facile da usarsi.
Ho visitato il link, ho letto la documentazione di embarcadero (onestamente
un pochino scarsa), adesso devo fare l'implementazione nella procedura.

Seguira' aggiornamento ....

Grazie

Daniele

Loading...