Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
PHP - leggere caratteri
Forum - PHP - leggere caratteri

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
salve a tutti mi e venuta l' idea di creare uno scrpit in grado di calcolare il codice fiscale. l' algoritmo per calcolare il codice  fiscale http://it.wikipedia.org/wiki/Codice_fiscale dice di prendere le prime tre consonanti (e fin qui tutto bene) ma il problema e che non so come scriverle! ecco il codice che legge le consonanti:

Codice sorgente - presumibilmente PHP

  1. // creo l' array delle consonanti e delle vocali
  2. $consonanti = array('b','c','d','f','g','h','l','m','n','o','p','q','r','s','t','v','z');
  3. $vocali = array('a','e','i','o','u');
  4.  
  5. // leggo le consonanti
  6. foreach($consonanti as $consonante) {
  7. $consonanti_cognome = strpos($cognome, $consonante);
  8. }


Ultima modifica effettuata da il 23/10/2010 alle 16:05
PM
Avatar
paoloricciuti (Ex-Member)
Pro


Messaggi: 137
Iscritto: 27/04/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 16:27
Sabato, 23/10/2010
Testo quotato

Postato originariamente da bartn8:

salve a tutti mi e venuta l' idea di creare uno scrpit in grado di calcolare il codice fiscale. l' algoritmo per calcolare il codice  fiscale http://it.wikipedia.org/wiki/Codice_fiscale dice di prendere le prime tre consonanti (e fin qui tutto bene) ma il problema e che non so come scriverle! ecco il codice che legge le consonanti:

Codice sorgente - presumibilmente PHP

  1. // creo l' array delle consonanti e delle vocali
  2. $consonanti = array('b','c','d','f','g','h','l','m','n','o','p','q','r','s','t','v','z');
  3. $vocali = array('a','e','i','o','u');
  4.  
  5. // leggo le consonanti
  6. foreach($consonanti as $consonante) {
  7. $consonanti_cognome = strpos($cognome, $consonante);
  8. }



Beh così alla fine del foreach ti ritroverai con la posizione dell'ultima consonante del cognome. Inoltre c'è un algoritmo migliore secondo me:
Codice sorgente - presumibilmente Php

  1. <?
  2. function isConsonant($lettera){
  3. if($lettera!='a' || $lettera!='e' || $lettera!='i' || $lettera!='o' || $lettera!='u'){
  4. return 1;
  5. }
  6. return 0;
  7. }
  8. $leng=strlen($cognome);
  9. $i=0;
  10. $cont=0;
  11. $codicefiscale="";
  12. while($i<$leng && $cont<3){
  13. if(isConsonant($cognome[$i])==1){
  14. $codicefiscale=$codicefiscale.$cognome[$i];
  15. $cont++;
  16. }
  17. $i++;
  18. }
  19. ?>



Come vedi in questo codice c'è una funzione che ci dice se una lettera è o meno una consonante poi ci basta scorrere il cognome lettera per lettera e fino alle prime 3 consonanti.


Member paoloricciuti= new Member();
PM
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 16:24
Sabato, 23/10/2010
1) La questione è abbastanza più complessa di come la presenti: non basta solo prendere le prime tre consonanti. Infatti prova a creare il codice fiscale di DARIO FOE... Già il tuo metodo non funziona.

2) Completamente inutile l'array delle consonanti.

Io ho realizzato già una classe che dà l'output del codice fiscale, e per generare le consonanti del cognome ho usato questa procedura:

1) Attraverso una Function dal cognome in input ricavo due variabili string: VOCALI e CONSONANTI. Ovviamente basta fare una cosa di questo genere: Per ogni lettera del cognome, se appartiene all'array delle vocali (array('a','e','i','o','u')) la aggiungi alla variabile VOCALI, altrimenti alla variabile CONSONANTI.

2) Una volta avuta la stringa CONSONANTI, ho preso la sottostringa formata dai primi tre caratteri:
Codice sorgente - presumibilmente Plain Text

  1. $output = substr($CONSONANTI,0,2)


Se strlen(output) è 3, hai risolto, altrimenti aggiungi anche le vocali e prend le prime tre lettere:
Codice sorgente - presumibilmente Plain Text

  1. $output = substr($output.$VOCALI,0,2)


Se adesso sono tre le lettere OK, altrimenti fintantochè la lunghezza di output non sia 3 aggiungi una "X"

Ultima modifica effettuata da a_butta il 23/10/2010 alle 16:26


PM
Avatar
gigisoft (Member)
Guru


Messaggi: 695
Iscritto: 11/10/2008

Up
0
Down
V
Segnala al moderatore
Postato alle 0:57
Domenica, 24/10/2010
Salve,
in realta' l'algoritmo e' un pochino piu' complesso; inoltre bisogna fare attenzione agli spazi ( se uno ha piu' nomi, o un cognome di piu' parole, gli spazi potrebbero essere scambiati per consonanti )
comunque mi interessai tempo fa dell'argomento, c'e' un programma tra i miei che ho messo su PieroTofy che calcola il codice fiscale, guardalo, anche se e' in Delphi non dovrebbe essere troppo complicato capire come funziona l'algoritmo.

Ciao :k:

Luigi.


Le cose si fanno per bene o non si fanno affatto
PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Up
0
Down
V
Segnala al moderatore
Postato alle 13:31
Domenica, 24/10/2010
ho risolto il problema, quando lo manderò per l' ammissione ai membri e riceverò risposta scriverò qui il codice sorgente.

PM
Usa i commenti per chiedere spiegazioni o ringraziare le risposte.