1
PHP / LimpiarString()
« en: 27 de Octubre de 2006, 16:02:16 pm »
Hasta ahora habíamos hablado de funciones que vienen predeterminadas en PHP. Pero también podríamos hablar de una creada por nosotros... ¿Por qué no? 
LimpiarString(), este es el nombre que le he puesto a la función de la que voy a hablar a continuación.
Código
<?
function LimpiarString($cadena) {
$cadena = htmlspecialchars(trim($cadena));
$cadena = eregi_replace("<[^>]*>","",$cadena) ;
$cadena = eregi_replace(".*//","",$cadena) ;
return $cadena;
}
?>
¿Qué hace?
Cuando el usuario envía valores (a través de la URL, es decir, pagina.php?variable=valor..., de un formulario, etc) se acepta cualquier tipo de caracter. Esto es algo que no nos conviene demasiado, ya que queremos que el usuario pueda enviar datos, pero no que pueda escribir CÓDIGO (y hacer lo que quiera en la web).
Pasando LimpiarString() por esos valores, ya no detecta el código. Lo envía todo como texto plano.
¿Cómo se usa?
Una vez hemos definido la función (código de arriba), sólo tenemos que aplicarla usandolo así en una variable:
$variable = LimpiarString($variable);
Ejemplo
$variable = "<b>hola</b>"; //Esto es lo que contiene la variable, el texto: <b>hola</b>
echo $variable; //Mostrando la variable tal cual, mostraría hola en negrita. ¿Por qué? Porque traduce las etiquetas de HTML <b> y </b>
$variable = LimpiarString($variable);
echo $variable; //Ahora sí habría pasado por el proceso de limpiarla, y el resultado quedaría: <b>hola</b> MOSTRANDOSE TAL CUAL, y NO traduciendo el código.
Explicación parcial
Lo que hace la función es someter a la variable a diferentes comandos :
Recordad que esta función (muy sencilla) la he creado yo, y no viene predeterminada con PHP. Tenéis que definirla con el código que he puesto arriba, y usarla igual que en el ejemplo.

LimpiarString(), este es el nombre que le he puesto a la función de la que voy a hablar a continuación.
Código
<?
function LimpiarString($cadena) {
$cadena = htmlspecialchars(trim($cadena));
$cadena = eregi_replace("<[^>]*>","",$cadena) ;
$cadena = eregi_replace(".*//","",$cadena) ;
return $cadena;
}
?>
¿Qué hace?
Cuando el usuario envía valores (a través de la URL, es decir, pagina.php?variable=valor..., de un formulario, etc) se acepta cualquier tipo de caracter. Esto es algo que no nos conviene demasiado, ya que queremos que el usuario pueda enviar datos, pero no que pueda escribir CÓDIGO (y hacer lo que quiera en la web).
Pasando LimpiarString() por esos valores, ya no detecta el código. Lo envía todo como texto plano.
¿Cómo se usa?
Una vez hemos definido la función (código de arriba), sólo tenemos que aplicarla usandolo así en una variable:
$variable = LimpiarString($variable);
Ejemplo
$variable = "<b>hola</b>"; //Esto es lo que contiene la variable, el texto: <b>hola</b>
echo $variable; //Mostrando la variable tal cual, mostraría hola en negrita. ¿Por qué? Porque traduce las etiquetas de HTML <b> y </b>
$variable = LimpiarString($variable);
echo $variable; //Ahora sí habría pasado por el proceso de limpiarla, y el resultado quedaría: <b>hola</b> MOSTRANDOSE TAL CUAL, y NO traduciendo el código.
Explicación parcial
Lo que hace la función es someter a la variable a diferentes comandos :
- HTMLSPECIALCHARS: Hace que no interprete el HTML (naveda ya nos lo explicó)
- TRIM: Quita espacios blancos de delante y de detrás del texto. Por si acaso.
- EREGI_REPLACE:. Reemplaza caracteres extraños por otros que lo conviertan en texto plano, y no sea interpretado como código.
Recordad que esta función (muy sencilla) la he creado yo, y no viene predeterminada con PHP. Tenéis que definirla con el código que he puesto arriba, y usarla igual que en el ejemplo.

