elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 04:15  


Tema destacado: Suscripción al boletín mensual de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP
| | | |-+  limpiar un str de signos raros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: limpiar un str de signos raros  (Leído 2,316 veces)
Kase


Desconectado Desconectado

Mensajes: 1.171


programa bonito ¬¬


Ver Perfil WWW
limpiar un str de signos raros
« en: 12 Abril 2011, 06:21 »

necesito limpiar un string de cualquier signo que no sea letra o numero

por ejemplo
$str = '¿cual es la raiz de 42?';
a
$str = 'cual es la raiz de 42';


alguna idea de como hacerlo de la forma mas eficiente posible?


En línea

Feedeex

Desconectado Desconectado

Mensajes: 172


Ver Perfil
Re: limpiar un str de signos raros
« Respuesta #1 en: 12 Abril 2011, 06:38 »

Código:
function comprobar_cadena($str) {
   $caracteres_permitidos = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
   for ($i = 0; $i < strlen($str); $i++) {
         if (strpos($caracteres_permitidos, substr($str,$i,1)) == FALSE) {
  return false;
} else {
  return true;
}
   }
  }

Lo llamás así:

Código:
$variable = comprobar_cadena($str);
if ($variable == TRUE) {
 echo "Existen signos no permitidos";
  } else {
 echo "Todo ok";
}


En línea
Kase


Desconectado Desconectado

Mensajes: 1.171


programa bonito ¬¬


Ver Perfil WWW
Re: limpiar un str de signos raros
« Respuesta #2 en: 12 Abril 2011, 06:58 »

Gracias!!  estaba buscando algo mas estilo python, pero  php se queda corto en ese aspecto =<

y esque demaciadas comparaciones causa mas tiempo de ejecuccion y de procesamiento.

almenos es un codigo limpio... ^^
muchas gracias
En línea

Kasi

Desconectado Desconectado

Mensajes: 79



Ver Perfil
Re: limpiar un str de signos raros
« Respuesta #3 en: 12 Abril 2011, 14:24 »

Prueba mejor con una expresión regular y sustituye los resultados por ''.

Con esta puede que te sirva, haz pruebas y ya nos dirás.
Código
$reg = '/\W\s/g';
$str = 'Lo que tengas ? que * buscar';
$rep = '';
$result = preg_replace($reg, $rep, $str);

La expresión es muy simple y se puede mejorar, pero bueno para un primer apaño quizá te sirva.

Te dejo esta página, que a lo mejor te sirve de ayuda para creartelas.

http://gskinner.com/RegExr/

Un saludo
En línea
Spider-Net


Desconectado Desconectado

Mensajes: 1.052


Un gran poder conlleva una gran responsabilidad


Ver Perfil WWW
Re: limpiar un str de signos raros
« Respuesta #4 en: 12 Abril 2011, 16:45 »

Código
function alfanumeric($string){
$string=ereg_replace("[^A-Za-z0-9]", "", $string);
return $string;
}

Recibe una cadena y devuelve la cadena sólo con símbolos alfanuméricos, nada de caracteres especiales. Su uso.

Código
$str = alfanumeric("¿cual es la raiz de 42?");
echo $str;

Devuelve: cual es la raiz de 42
En línea

"Si cuando hablas nadie se molesta, eso es que no has dicho absolutamente nada."
Shell Root


Desconectado Desconectado

Mensajes: 2.456


Alex Jurado


Ver Perfil WWW
Re: limpiar un str de signos raros
« Respuesta #5 en: 12 Abril 2011, 22:06 »

@Spider-Net, creo que falta agregarle un \s para los espacios, no?
Mejor usar preg_replace, ya que ereg_replace ésta obsoleta.
« Última modificación: 12 Abril 2011, 22:14 por Shell Root » En línea

---
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 954



Ver Perfil
Re: limpiar un str de signos raros
« Respuesta #6 en: 12 Abril 2011, 22:54 »

Código
/(?i)(?:[^\w]*)(?-i)/

Puedes usar este patrón junto a preg_replace().

Que en vez de eliminar caracteres especifico, elimino cualquier carácter que no sea alfanumérico .

Ejemplo:

Código
<?php
echo preg_replace('/(?i)(?:[^\w]*)(?-i)/','','h[oL=a');
?>
 

Salida:
Código:
hoLa

Saludos.
En línea

Castg!
Wiki

Desconectado Desconectado

Mensajes: 1.187



Ver Perfil WWW
Re: limpiar un str de signos raros
« Respuesta #7 en: 13 Abril 2011, 01:18 »

Yo hice esta función que crea un alias de un texto. Lo uso para cuando voy a ingresar un dato a la base de datos (un post de un blog por ejemplo, guardo el nombre Un post de programación!! [PHP][/i] y el alias un-post-de-programacion-php). Te dejo la función y editala a tu gusto, pero practicamente utiliza lo que ya te dijeron:

Esta es la función para que pegues en el archivo
Código:
function txtToAlias($flotaTitle='',$flotaLength=false){
preg_match_all('/[a-z0-9\-]+/',strtr(preg_replace('/\s+/','-',trim(strtolower($flotaTitle))), "àáâãäåèéêëìíîïòóôõöùúûüñ", "aaaaaaeeeeiiiiooooouuuun"),$return);
return ($flotaLength)?substr(implode($return[0]),0,$flotaLength):implode($return[0]);
}

Esta está resaltada pero hay problemas con àáâãäåèéêëìíîïòóôõöùúûüñ
Código
function txtToAlias($flotaTitle='',$flotaLength=false){
preg_match_all('/[a-z0-9\-]+/',strtr(preg_replace('/\s+/','-',trim(strtolower($flotaTitle))), "aaaaaaeeeeiiiiooooouuuun", "aaaaaaeeeeiiiiooooouuuun"),$return);
return ($flotaLength)?substr(implode($return[0]),0,$flotaLength):implode($return[0]);
}
En línea

Nakp
casi es
Ex-Staff
*
Desconectado Desconectado

Mensajes: 6.334

he vuelto :)


Ver Perfil WWW
Re: limpiar un str de signos raros
« Respuesta #8 en: 13 Abril 2011, 04:09 »

pues IMHO casi la mejor solucion es la de kasi agregando \d para los numeros :P pero negativo eh ¬¬

Código
$reg = '/[^\w\d\s]/i';
$buffer = 'asdf8a7s6d5f4asdf#456789(&335GG/X>%X57';
 
preg_replace($reg, '', $buffer);

devuelve:
Citar
asdf8a7s6d5f4asdf456789335GGXX57

agregale espacios y sigue funcionando :P
En línea

Ojo por ojo, y el mundo acabará ciego.
dimitrix


Desconectado Desconectado

Mensajes: 4.059



Ver Perfil WWW
Re: limpiar un str de signos raros
« Respuesta #9 en: 13 Abril 2011, 12:32 »

Como narices esto:
Código:
/(?i)(?:[^\w]*)(?-i)/

puede referirse a letras y números :-|
En línea




~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 954



Ver Perfil
Re: limpiar un str de signos raros
« Respuesta #10 en: 13 Abril 2011, 14:30 »

/(?i)(?:[^\w\s]*)(?-i)/

Es parecida a la de Nakp, la diferencia es que hago que sea insensible a mayúscula y minúscula desde el mismo patrón, así no tengo que agregarle el operador i. Así hago el patrón mas portátil xD.

Nose porque le agregan el \w\d si con \w basta...

Saludos.
En línea

Nakp
casi es
Ex-Staff
*
Desconectado Desconectado

Mensajes: 6.334

he vuelto :)


Ver Perfil WWW
Re: limpiar un str de signos raros
« Respuesta #11 en: 13 Abril 2011, 15:48 »

w es alfanumerico? Crei que eran solo letras x'D en fin :P es mas facil la que puse a me lo parece jajaja
En línea

Ojo por ojo, y el mundo acabará ciego.
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 954



Ver Perfil
Re: limpiar un str de signos raros
« Respuesta #12 en: 13 Abril 2011, 16:09 »

Si, es alfanumérico.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Lenguaje de signos
Foro Libre
SheKeL_C$ 4 849 Último mensaje 27 Octubre 2008, 23:28
por chrominum
Un ordenador "interpreta" por primera vez el lenguaje de los signos
Noticias
wolfbcn 0 268 Último mensaje 15 Septiembre 2009, 01:16
por wolfbcn
Signos
Software
perolon 0 745 Último mensaje 10 Octubre 2009, 02:03
por perolon
Diez signos que indican que tu ordenador está infectado por un virus
Noticias
wolfbcn 0 778 Último mensaje 5 Agosto 2010, 13:47
por wolfbcn
Programa que sepa los signos que hay que poner en una igualdad « 1 2 »
Programación C/C++
javirk 18 1,020 Último mensaje 10 Febrero 2012, 04:33
por do-while
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines