Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/07/2005, 13:29
Keysher
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 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!