Foros del Web » Programando para Internet » PHP »

Dejar una cadena solo con letras sin acentos, números y comillas dobles

Estas en el tema de Dejar una cadena solo con letras sin acentos, números y comillas dobles en el foro de PHP en Foros del Web. Buenas, Necesito un poco de ayuda en un asuntillo que tengo entre manos: Tengo un formulario, con un campo de texto dónde un usuario introduce ...
  #1 (permalink)  
Antiguo 12/07/2005, 13:29
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 4 meses
Puntos: 17
Dejar una cadena solo con letras sin acentos, números y comillas dobles

Buenas,

Necesito un poco de ayuda en un asuntillo que tengo entre manos:

Tengo un formulario, con un campo de texto dónde un usuario introduce básicamente lo que le da la gana.

Lo que necesito es filtrar esa cadena de texto de tal modo que:

- Los acentos los convierta en letras sin acentos (á -> a, ë -> e, etc....)
- Elimine una serie de caracteres que yo le marce (puntos, comas, llaves, simbolos y signos raros, etc...)

En definitiva, la cadena debe quedar con números y letras en minuscula, aunque puede contener comillas (") , el resto de caracteres debe ser eliminado.

Pasar a minusculas toda la cadena resultante y cambiar las letras acentuadas por otras que no lo son ya lo tengo hecho.

Sólo tengo que quitar la serie de simbolos y signos que no me interesa que tenga la cadena (que de momento serían todos menos las comillas).

¿Cúal es la mejor forma de hacer esto?

Había pensado en un ereg_replace dónde le meta yo todos los signos que debe borrar, pero no sé si habría alguna forma más correcta de conseguir esto....

Ejemplo:

La cadena: "palabra 123456 áéióü +.,- "p{r}u(e)ba....MAYUSCULAS
debería quedarse en: "palabra 123456 aeiou "pruebamayusculas


Se me ocurre algo del estilo:

$txt = strtolower($txt);

$txt = ereg_replace("[áàâãª]","a",$txt);
$txt = ereg_replace("[íìî]","i",$txt);
$txt = ereg_replace("[éèê]","e",$txt);
$txt = ereg_replace("[óòôõº]","o",$txt);
$txt = ereg_replace("[úùû]","u",$txt);
$txt = str_replace("ç","c",$txt);


$eliminar = ',.-;._'"{}`+*]^[¡¿'?=)(/&%$·"!ª\|@#¬<>€'
$txt = ereg_replace($eliminar,"",$txt);



El problema de usar éste método es que debería meter en la cadena $eliminar TODOS los caracteres que quiera borrar, y me interesa quitar TODO menos las letras, los números y las comillas dobles.

¿Hay alguna forma mejor para hacer lo que necesito?

Saludos!
  #2 (permalink)  
Antiguo 13/07/2005, 11:16
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 4 meses
Puntos: 17
¿Nadie me puede echar una mano o darme alguna pista? ¿alguna función que elimine todos los imbolos que no sean letras ni números excepto los que yo le marque? ¿algo del estilo?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:41.