Foros del Web » Programando para Internet » PHP »

Enmascarar rut con php

Estas en el tema de Enmascarar rut con php en el foro de PHP en Foros del Web. Hola amigos tengo un problema, debo enmascarar con xxx todos los rut que aparezcan en una cadena, pero me encotre con un pequeño problema, el ...
  #1 (permalink)  
Antiguo 10/03/2014, 09:37
Avatar de master206  
Fecha de Ingreso: enero-2011
Mensajes: 4
Antigüedad: 13 años, 2 meses
Puntos: 0
Pregunta Enmascarar rut con php

Hola amigos tengo un problema, debo enmascarar con xxx todos los rut que aparezcan en una cadena, pero me encotre con un pequeño problema, el código que uso solo enmascara el primer rut que encuentre en la cadena, los demás que puedan estar después de ese rut ya no los enmascara, favor de ayudarme :(

el código es este:

Código PHP:
$cadena "Prueba para RUT 16.546.044-0 numero 124 con otro RUT 16.556.044-k, tambien el 16558044-0 o el RUT 16,586,044-0 y el RUT 16,556,044-5";

$patron"/\d{0,3}.{0,1}\d{0,3}.{0,1}\d{1,3}-[0-9kK]?/";
$resultado=preg_match($patron$cadena$tmp)==true?str_replace("$tmp[0]","xx.xxx.xxx-x",$cadena):$cadena;
echo 
$resultado
Si se fijan algunos rut están con puntos, otros con coma y otros solo con dígito verificador

y el resultado que me arroja es este:

Prueba para RUT xx.xxx.xxx-x numero 124 con otro RUT 16.556.044-k, tambien el 16556044-0 o el RUT 16,556,044-0 y el RUT 16,556,044-5
  #2 (permalink)  
Antiguo 10/03/2014, 13:08
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Enmascarar rut con php

¿Has probado a mirar en la documentación que hace preg_match?

Segun la doc http://es1.php.net/preg_match:
"Busca en subject una coincidencia con la expresión regular dada en pattern"

necesitas usar esta preg_match_all ;)
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 11/03/2014, 06:20
Avatar de master206  
Fecha de Ingreso: enero-2011
Mensajes: 4
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Enmascarar rut con php

Cita:
Iniciado por Eleazan Ver Mensaje
¿Has probado a mirar en la documentación que hace preg_match?

Segun la doc [url]http://es1.php.net/preg_match:[/url]
"Busca en subject una coincidencia con la expresión regular dada en pattern"

necesitas usar esta [URL="http://es1.php.net/preg_match_all"]preg_match_all [/URL];)

Gracias amigo por tu respuesta, claro había intentado lo que me indicas, el código lo deje así:

Código PHP:
$cadena "Prueba para RUT 16.546.044-0 numero 124 con otro RUT 16.556.044-k, tambien el 16558044-0 o el RUT 16,586,044-0 y el RUT 16,556,044-5"

$patron"/\d{0,3}.{0,1}\d{0,3}.{0,1}\d{1,3}-[0-9kK]?/"
$resultado=preg_match_all($patron$cadena$tmp)==true?str_replace("$tmp[0]","xx.xxx.xxx-x",$cadena):$cadena
echo 
$resultado
dejándolo con preg_match_all pero no me funciono, el resultado que devolvió fue toda la cadena sin ninguna mascara, osea así:

Prueba para RUT 16.556.044-0 numero 124 con otro RUT 16.556.044-k, tambien el 16556044-0 o el RUT 16,556,044-0 y el RUT 16,556,044-5

no se que pueda ser :(
  #4 (permalink)  
Antiguo 11/03/2014, 06:48
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Enmascarar rut con php

Estás pasando mal el primer parametro de str_replace. Quítale las comillas ;)
__________________
>> Eleazan's Source
>> @Eleazan
  #5 (permalink)  
Antiguo 11/03/2014, 06:59
Avatar de master206  
Fecha de Ingreso: enero-2011
Mensajes: 4
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Enmascarar rut con php

Gracias por tu ayuda amigo, al final lo logre de esta forma:

Código PHP:
$cadena "Prueba para RUT 16.556.044-0 lala lakla 124 con otro RUT 16.556.044-k, tambien el 16556044-0 o el RUT 16,556,044-0 y el RUT 16,556,044-5";
$patron"/\d{0,3}.{0,1}\d{0,3}.{0,1}\d{1,3}-[0-9kK]?/";

$sustitucion '<u>xx.xxx.xxx-x</u>';
$resultado preg_replace($patron$sustitucion$cadena);
echo 
$resultado
finalmente el resultado fue este:

Prueba para RUT xx.xxx.xxx-x lala lakla 124 con otro RUT xx.xxx.xxx-x, tambien el xx.xxx.xxx-x o el RUT xx.xxx.xxx-x y el RUT xx.xxx.xxx-x

fue un poco mas simple pero cumple con lo que necesitaba, muchas gracias por tu ayuda amigo :)

Etiquetas: enmascarar, rut
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:04.