Ver Mensaje Individual
  #7 (permalink)  
Antiguo 10/10/2012, 22:24
lisi1986
 
Fecha de Ingreso: mayo-2011
Mensajes: 78
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Consulta operaciones con String - Comprobar numero de contenedor

Muchas gracias por la ayuda!! funciona a la perfeccion.

Pego el codigo por si alguien lo quiere usar. Saludos!!

Código PHP:
<?php
    
    $cadena 
= 'SUDU 790993-1';
    
$cadenamayuscula = strtoupper ($cadena);
    
$cadena1 = str_replace('-', '', $cadenamayuscula); // quita el -
    
$cadena1b = str_replace(' ', '', $cadena1);// quita el espacio en blanco
    
$cadena2 = substr($cadena1b,0,10); // corta la cadena a 10 digitos para no multiplicar el digito verificador
    
$ultimodigito = substr($cadena,12,1);
   
    if (
strlen ($cadena2) == 10) {
        
$letracont = substr($cadena2,0,4);//extrae las letras
        
$digitos = substr($cadena2,4,7);//extrae los numeros
        
if (ctype_alpha($letracont) && is_numeric($digitos)){ // verifica que realmente sean letras y numeros
    
            
$letras = array(0 => 0, 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9, 'A' => 10, 'B' => 12, 'C' => 13, 'D' => 14, 'E' => 15, 'F' => 16, 'G' => 17, 'H' => 18, 'I' => 19, 'J' => 20, 'K' => 21, 'L' => 23, 'M' => 24, 'N' => 25, 'O' => 26, 'P' => 27, 'Q' => 28, 'R' => 29, 'S' => 30, 'T' => 31, 'U' => 32, 'V' => 34, 'W' => 35, 'X' => 36, 'Y' => 37, 'Z' => 38);
            
$posicion = 1; // Cada vez se multiplicara por dos
            
$suma = 0; // Aquí guardarás el total
     
                
for($i = 0; $i < strlen($cadena2); $i++) {
                 
$caracter = $cadena2[$i];
                    
$suma += ($posicion * $letras[$caracter]);
                    
$posicion = $posicion * 2;
        
    }
        
$division = $suma/11; // divide suma de caracteres por 11
        
$redondeado = floor ($division); // trunca el resultado de la division
        
$multiplicacion = $redondeado * 11; // multiplica el resultado truncado por 11
        
$verificador = $suma - $multiplicacion; // resta la suma original menos el numero truncado * 11. Este numero es el ultimo digito del nro de contenedor
            
            
}
    }
    
            if (
$verificador == $ultimodigito){ // verifica que el ultimod digito del nro de contenedor sea igual al resultado de la comprobacion
               
echo "El numero de contenedor es correcto";
            }else{
                echo 
"El numero de contenedor es inexistete";
            }
    
    
?>