|    
			
				13/02/2008, 10:27
			
			
			  | 
  |   |  | Moderador extraterrestre |  |  Fecha de Ingreso: diciembre-2001 Ubicación: Madrid 
						Mensajes: 6.987
					 Antigüedad: 23 años, 10 meses Puntos: 61 |  | 
  |  [curiosidad] Script que comprueba errores en DNI  
  Por un tema del trabajo me ha tocado comprobar ciertos DNI que tenía mal puestos. Pensando pensando he llegado a la conclusión de que lo que es más probable que esté bien es la letra, por lo que se podría comprobar (sabiendo que la letra se haya aplicando el módulo 23 al número) qué cifra has tecleado mal. En caso de error lo más probable es que se ponga la cifra anterior o la posterior a la auténtica. Así que pensando pensando he llegado a este script que es una versión digamos beta. Y que seguro que entre todos podemos mejorar. Es un script que detecta la cifra que está mal puesta y pone las posibles soluciones según el nivel de precisión que se ponga en su búsqueda (por defecto está puesto en 1 (uno más o uno menos) pero se puede cambiar hasta 5).
 
 A ver que os parece:
 
 
  Sólo detecta en caso de que se haya confundido uno con una sola cifra. Si te confundes con 2 cifras las posibilidades son demasiadas para que resulte útil.Código PHP:    <script>
 //Script de KarlanKas
 
 control="TRWAGMYFPDXBNJZSQVHLCKET";
 numerro="";
 
 function comprobar(numero,letra,precision,seguimiento){
 document.write(numero+"-"+letra+"-->Original<br />");
 encontrado=false;
 for(digitos=0;digitos<numero.length;digitos++){
 for(variacion=-precision;variacion<=precision;variacion++){
 numerro="";
 for(v=0;v<numero.length;v++){
 variable=parseInt(numero.charAt(v))+variacion;
 if(variable<0){variable=10-variable;}
 if(variable>9){variable=variable-10;}
 numerro+=(digitos==v)?variable:numero.charAt(v);
 }
 
 if(control.charAt(parseInt(numerro)%23)==letra){
 document.write(numerro+"-"+letra+"-->Bueno<br />");
 encontrado=true}
 else{
 if(seguimiento){
 document.write('<strong style="color:red">'+numerro+'</strong><br>');
 }
 }
 }
 }
 if(!encontrado){
 document.write("No se ha encontrado ninguno");
 }
 }
 //comprobar (número,letra, precisión, hacer_seguimiento)
 comprobar("71795207","W",1,false);
 </script>
 
 
 Creo que funciona, pero vete tú a saber...
 
Un saludo! 
[/FONT]  
				__________________Cómo escribir 
No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.     |