Underc0de

Programación Web => Back-end => Mensaje iniciado por: HckDrk en Octubre 17, 2012, 03:39:57 AM

Título: Limpiar cadena de texto
Publicado por: HckDrk en Octubre 17, 2012, 03:39:57 AM
hola todos, he hecho un pequeño script para poder limpiar una cadena de texto, solo se permiten números y el alfabeto, aquí el pequeño código...

Código (php) [Seleccionar]

<?php

function limpiar($cadena){

$abc=array(" ","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
for(
$i=0;$i<strlen($cadena);$i++){
if(is_numeric($cadena[$i]) || in_array($cadena[$i],$abc)){
$cadena_1.=$cadena[$i];
}
}

return 
$cadena_1;
}
if(
$_POST['enviar']=="ok"){
echo 
limpiar($_POST['cadena']);
}

?>



si desean agregar otro carácter para que sea permitido, agréguenlo en el array....

aquí pueden ver su funcionamiento! (: http://hckdrk.webcindario.com/vln.php

saludos!  ;D
Título: Re:limpiar cadena de texto
Publicado por: Xt3mP en Octubre 17, 2012, 07:20:13 PM
Está bueno el script, aunque con preg_match te ahorras todas esas líneas indicando [a-zA-Z_] etc, saludos.
Título: Re:limpiar cadena de texto
Publicado por: HckDrk en Octubre 18, 2012, 12:15:50 AM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Está bueno el script, aunque con preg_match te ahorras todas esas líneas indicando [a-zA-Z_] etc, saludos.

bro! xt3mp! cuanto tiempo! :D saca el psy! d[-.-]b xD

esto lo hice en un ratito libre que me hice xD, si no mal recuerdo (que ya tengo bastante tiempo fuera de esto, estoy demasiado desactualizado! D:) solo preg_match valida si contiene letras, mas no te la limpia, y mi objetivo era limpiar cualquier carácter que no fuera algún numero o letra!

saludos bro! :D espero te acurdes de yo! D:
Título: Re:limpiar cadena de texto
Publicado por: Deyual en Octubre 18, 2012, 01:04:01 AM
No se mucho de php, pero intentaría usar los ctype para estos casos


<?php

function limpiar($cadena){

for(
$i=0;$i<strlen($cadena);$i++){
if(ctype_alnum($cadena[$i])){
$cadena_1.=$cadena[$i];
}
}

return 
$cadena_1;
}
if(
$_POST['enviar']=="ok"){
echo 
limpiar($_POST['cadena']);
}

?>



con este ctype no toma los espacios, saltos de linea, tabulaciones, etc. pero solo faltaría agregarle la condición ctype_cntrl($cadena[$i]).
existen muchos otras funciones para ctype: http://php.net/manual/es/book.ctype.php (http://php.net/manual/es/book.ctype.php)
Título: Re:limpiar cadena de texto
Publicado por: Alex en Octubre 21, 2012, 05:12:21 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Está bueno el script, aunque con preg_match te ahorras todas esas líneas indicando [a-zA-Z_] etc, saludos.

Idem pero no lo haría con preg_match me parece más idóneo preg_replace.

yo usé preg_replace para hacer una función que genera una url seo por decirlo así, agarra el titulo original y lo tranforma para que quede como una url seo.


Public Function set_seo($string)
   {
    return preg_replace('/[^\-a-zA-Z0-9]/', '', preg_replace('/\s+/', '-',strtolower($string)));
   }


(aclaro que el public es porque lo saqué de una clase)

es que tu función es un poco exagerada ante el consumo de recursos.

$_POST['enviar']=="ok"

me refiero a que por ejemplo en esa linea no te pusiste a revisar el gasto innecesario de parsear el string ok cuando lo podrías haber puesto literal. ya con eso solo haces derroche de recursos, y sin hacer incapié en las estructuras que utilizaste, en realidad es una simple opinión no hace falta que me hagan mucho caso, es que soy bastante molesto en cuanto se refiere a consumo de recursos xD

esa y otras funciones están aplicadas en mi script

I-blog CMS en POO y MVC (http://underc0de.org/foro/php/i-blog-cms-en-poo-mvc/)