Ver Mensaje Individual
  #7 (permalink)  
Antiguo 10/10/2012, 22:24
lisi1986
 
Fecha de Ingreso: mayo-2011
Mensajes: 78
Antigüedad: 13 años, 8 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=> 1=> 2=> 3=> 4=> 5=> 6=> 7=> 8=> 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";
            }
    
    
?>