Actualmente estas viendo el weblog personal de Carlos Montalvo, un profesional en el desarrollo web con sede en la ciudad de Lima, Perú.

Suscribete a posts o comentarios

Sigueme en Twitter

Limpiar cadena de caracteres raros en php

06 Oct

Escrito por hace 1 año y 10 meses | 8 Comentarios

Esto es una forma de limpiar tu cadena de caracteres no deseados, que nos puede ser util especialmente antes de insercciones a nuestra base de datos o donde necesitemos verificar los datos mandados por el usuario.


function limpiar ($cadena){

	if (empty($cadena)) return false;

//limpiamos todos los caracteres invalidos
	$nueva_cadena = ereg_replace("[^ A-Za-z0-9_]", "", $cadena);

 	return $nueva_cadena;
}

	$cadena = "Esto es un texto de letras, numeros 12345 y caracteres raros !£$%^&";

echo limpiar ($cadena);

Categorizado :Desarrollo Web

Etiquetado :php

8 Comentario(s) para "Limpiar cadena de caracteres raros en php"

maeghith

October 6th, 2008 hace 1 año y 10 meses

¿y los irlandeses?, p.ej.: O'hara

PD: no reinventemos la rueda: mysql_escape_string, mysql_real_escape_string y add_slashes están para estas cosas

Carlos Montalvo

October 6th, 2008 hace 1 año y 10 meses

@maeghith: Te invito a que pruebes la diferencia.

$cadena = "Esto es un texto de letras, numeros 12345 y caracteres raros !£$%^&";

echo limpiar ($cadena)."n";

echo mysql_escape_string($cadena)."n";

echo mysql_real_escape_string($cadena)."n";

echo AddSlashes($cadena)."n";

echo mysql_escape_string(mysql_real_escape_string(AddSlashes($cadena)))."n";

sin mencionar que para usar mysql_real_escape_string y mysql_escape_string necesitamos tener una conexion a una db.

Gracias por tu comentario ;)

maeghith

October 7th, 2008 hace 1 año y 10 meses

para usar mysql_real_escape_string y mysql_escape_string necesitamos tener una conexion a una db.

Había entendido que era

util especialmente antes de insercciones a nuestra base de datos.

Así que asumo que esa conexión existe.

Te invito a que pruebes la diferencia.

Evidentemente que hay diferencias, no he dicho que fuesen a dar el mismo resultado :)

Pero parece que no has entendido mi comentario sobre el pobre señor O'Hara, irlandés él.

He probado el código (ni que hiciera falta, con la expresión regular tan facilona en que se basa el filtro, pero tenía un rato :-) ), y aún así insisto en que hay mejores formas de hacer las cosas que reinventar la rueda. De hecho yo te invito a que pruebes tu el siguiente código (espero que no hayas cambiado el filtro de wp por el tuyo ;-) ):

$cadenas = array(
"Jim O'Hara",
"Abdul-Mu'izz",
"Toño Güell Marañón",
"Adélaïde Garçon",
"Esto es un texto de letras, numeros 12345 y caracteres raros !£$%^&"
);
$funciones = array(
"limpiar",
"addslashes",
"mysql_escape_string",
"mysql_real_escape_string"
);
mysql_connect( 'db', 'usr', '***');

echo "<pre>n";
foreach( $funciones as $funcion ){
echo "n----",$funcion,"-----n";
var_dump(
array_map( $funcion, $cadenas )
);
}
echo "n</pre>";

Carlos Montalvo

October 8th, 2008 hace 1 año y 10 meses

@maeghith

@PD: no reinventemos la rueda
@no he dicho que fuesen a dar el mismo resultado

Con el echo de decir reinventar la rueda quieres decir que producira el mismo resultado :D .

@Evidentemente que hay diferencias

Si hay diferencias no crees que no es reinventar la rueda?

mysql_real_escape_string y mysql_escape_string cumplen su trabajo para injecciones sql y lo demas?

Saludos

terseus

October 18th, 2008 hace 1 año y 10 meses

Me parece una forma un poco "radical" de filtrar texto, incluso para una base de datos.

Hay caracteres que son considerados raros por esa expresión regular, y sin embargo no es conveniente eliminarlos, como ñ, á, ü, â, ', etc.

Imagino que a eso se refiere maeglith ^_^

Terseus

October 18th, 2008 hace 1 año y 10 meses

Me parece una forma un poco radical de filtrar texto, incluso para inserciones a una base de datos.

Hay caracteres que son considerados "raros" por esa expresión regular pero que no es conveniente eliminar, como ñ, á, ü, ', etc.

Imagino que es a eso a lo que se refiere maeglith ^_^

Диплом

October 28th, 2008 hace 1 año y 10 meses

Инфа что надо!

victor

October 22nd, 2009 hace 10 meses y 1 semana

No creo que sea reinventar la rueda, andaba buscando una función que me permitiera limpiar una cadena que pudiera utilizar como nombre de archivo, creo que es sencilla de modificar para utilizarla con mis propositos, mientras que con la función de mysql, no me parece posible.
Cada cosa para lo que es