elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


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


Desconectado Desconectado

Mensajes: 1.288


programa bonito ¬¬


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

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: 173


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

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.288


programa bonito ¬¬


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

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: 76



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

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
  1. $reg = '/\W\s/g';
  2. $str = 'Lo que tengas ? que * buscar';
  3. $rep = '';
  4. $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.165


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 pm »

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

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

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

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

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


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

@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 pm por Shell Root » En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



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

Código
  1. /(?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
  1. <?php
  2. echo preg_replace('/(?i)(?:[^\w]*)(?-i)/','','h[oL=a');
  3. ?>
  4.  

Salida:
Código:
hoLa

Saludos.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Castg!
Wiki

Desconectado Desconectado

Mensajes: 1.191



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

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
  1. function txtToAlias($flotaTitle='',$flotaLength=false){
  2. preg_match_all('/[a-z0-9\-]+/',strtr(preg_replace('/\s+/','-',trim(strtolower($flotaTitle))), "aaaaaaeeeeiiiiooooouuuun", "aaaaaaeeeeiiiiooooouuuun"),$return);
  3. return ($flotaLength)?substr(implode($return[0]),0,$flotaLength):implode($return[0]);
  4. }
En línea

Nakp
casi es
Ex-Staff
*
Desconectado Desconectado

Mensajes: 6.336

he vuelto :)


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

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

Código
  1. $reg = '/[^\w\d\s]/i';
  2. $buffer = 'asdf8a7s6d5f4asdf#456789(&335GG/X>%X57';
  3.  
  4. 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.847



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

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

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




Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Diez signos que indican que tu ordenador está infectado por un virus
Noticias
wolfbcn 0 1,811 Último mensaje 5 Agosto 2010, 13:47 pm
por wolfbcn
Programa que sepa los signos que hay que poner en una igualdad « 1 2 »
Programación C/C++
javirk 18 6,476 Último mensaje 10 Febrero 2012, 04:33 am
por do-while
problema leyes de los signos
Programación Visual Basic
asdexiva 1 1,762 Último mensaje 27 Febrero 2014, 02:17 am
por raul338
MotionSavvy, traductor de lenguaje de signos a voz
Noticias
wolfbcn 1 1,612 Último mensaje 19 Mayo 2014, 14:16 pm
por Gh057
sustituir signos con Textman en batch
Scripting
**Aincrad** 2 2,486 Último mensaje 7 Febrero 2018, 02:28 am
por **Aincrad**
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines