Originariamente inviato da Andrea1979
Il "problema" è il comportamento "inatteso" delle funzioni di conversione da base a base: nell'alfabeto del tuo codice a barre non sono assegnabili A, E, I, O. Nella conversione "intrinseca" di PHP, ad A corrisponde 10 etc etc, ed infatti facendo i conti (e fatalità l'ultima lettera utile è la V, a cui corrisponde 31) viene proprio fuori il risultato che ottieni tu: 1.043.722.184

Ok perfetto e' tutto chiarissimo Grazie!

ma mi sa che sbaglio ancora qualcosa...

Codice PHP:
function farmacode($code){
     
$wres 0;
     
$codeprint "";
     
$strcon "0123456789BCDFGHJKLMNPQRSTUVWXYZ";
     
$strcon str_split($strcon,1);
     
$codelen strlen$code ) - 1;
     for( 
$i 0$i <= $codelen$i++ ) {
          
$char array_search(substr$code$i), $strcon);
          
$wres +=  ($char 32^($codelen $i));
     }
     return 
$wres;
}
                      
$code 'V3BRU8';
                                    
echo 
farmacode($code); 
RISULTATO => 3119

qualche idea?

Grazie