Reemplazar la ñ, acentos y espacios en PHP
[Actualizado] Hoy que tengo un poco de tiempo actualicé el snippet con mas caracteres y reemplace la función ereg_replace() porque en la versión de PHP 5.3 ya queda totalmente deprecada.
Pequeña función para reemplazar acentos, ñ y espacios.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
function limpiar_caracteres_especiales($s) { $s = ereg_replace("[áàâãª]","a",$s); $s = ereg_replace("[ÁÀÂÃ]","A",$s); $s = ereg_replace("[éèê]","e",$s); $s = ereg_replace("[ÉÈÊ]","E",$s); $s = ereg_replace("[íìî]","i",$s); $s = ereg_replace("[ÍÌÎ]","I",$s); $s = ereg_replace("[óòôõº]","o",$s); $s = ereg_replace("[ÓÒÔÕ]","O",$s); $s = ereg_replace("[úùû]","u",$s); $s = ereg_replace("[ÚÙÛ]","U",$s); $s = str_replace(" ","-",$s); $s = str_replace("ñ","n",$s); $s = str_replace("Ñ","N",$s); //para ampliar los caracteres a reemplazar agregar lineas de este tipo: //$s = str_replace("caracter-que-queremos-cambiar","caracter-por-el-cual-lo-vamos-a-cambiar",$s); return $s; } |
Especialmente util para nombres de archivos y URL’s.
¿no faltan las vocales con diéresis cómo ü Ä etc?
y que te parece eliminar los símobolos tipo: & ¿?
gracias por tu código, aquí te pongo el código algo modificado.
function limpiar(text)
{
var text = text.toLowerCase(); // a minusculas
text = text.replace(/[áàäâå]/g, ‘a’);
text = text.replace(/[éèëê]/g, ‘e’);
text = text.replace(/[íìïî]/g, ‘i’);
text = text.replace(/[óòöô]/g, ‘o’);
text = text.replace(/[úùüû]/g, ‘u’);
text = text.replace(/[ýÿ]/g, ‘y’);
text = text.replace(/[ñ]/g, ‘n’);
text = text.replace(/[ç]/g, ‘c’);
text = text.replace(/[‘”]/g, ”);
text = text.replace(/[^a-zA-Z0-9-]/g, ‘ ‘); //text = text.replace(/W/g, ‘ ‘);
text = text.replace(/s+/g, ‘-‘);
text = text.replace(/(_)$/g, ”);
text = text.replace(/^(_)/g, ”);
return text;
}
mierda, he colgado el código javascript en lugar de php. por cierto estaría bien poder suscribirse a este post para ver si me contestas. Un saludo
function limpiar_caracteres_especiales($s) {
$s = ereg_replace(“[áàâãªä@]”,”a”,$s);
$s = ereg_replace(“[ÁÀÂÃÄ]”,”A”,$s);
$s = ereg_replace(“[éèêë]”,”e”,$s);
$s = ereg_replace(“[ÉÈÊË]”,”E”,$s);
$s = ereg_replace(“[íìîï]”,”i”,$s);
$s = ereg_replace(“[ÍÌÎÏ]”,”I”,$s);
$s = ereg_replace(“[óòôõºö]”,”o”,$s);
$s = ereg_replace(“[ÓÒÔÕÖ]”,”O”,$s);
$s = ereg_replace(“[úùûü]”,”u”,$s);
$s = ereg_replace(“[ÚÙÛÜ]”,”U”,$s);
$s = str_replace(“[¿?]”,”_”,$s);
$s = str_replace(” “,”-“,$s);
$s = str_replace(“ñ”,”n”,$s);
$s = str_replace(“Ñ”,”N”,$s);
//para ampliar los caracteres a reemplazar agregar lineas de este tipo:
//$s = str_replace(“caracter-que-queremos-cambiar”,”caracter-por-el-cual-lo-vamos-a-cambiar”,$s);
return $s;
}
gracias me has salvado de una buena tunda !! joder .tio que buena funcion !
Gracias, me ha sido muy útil
Excelente aportación, nos has ahorrado mucho dolor de cabeza.
gracias !
Comentar que ereg_replace está obsoleta a partir de PHP 5.3.0 Es recomendable utilizar str_replace
saludos
Hola, yo la he migrado a preg_replace que es la recomendación en lugar de ereg_replace que esta depreciada, aquí les va:
function quitar_acento($s)
{
$s = preg_replace(“/[áàâãª]/”,”a”,$s);
$s = preg_replace(“/[ÁÀÂÃ]/”,”A”,$s);
$s = preg_replace(“/[ÍÌÎ]/”,”I”,$s);
$s = preg_replace(“/[íìî]/”,”i”,$s);
$s = preg_replace(“/[éèê]/”,”e”,$s);
$s = preg_replace(“/[ÉÈÊ]/”,”E”,$s);
$s = preg_replace(“/[óòôõº]/”,”o”,$s);
$s = preg_replace(“/[ÓÒÔÕ]/”,”O”,$s);
$s = preg_replace(“/[úùû]/”,”u”,$s);
$s = preg_replace(“/[ÚÙÛ]/”,”U”,$s);
$s = str_replace(“ç”,”c”,$s);
$s = str_replace(“Ç”,”C”,$s);
$s = str_replace(“ñ”,”n”,$s);
$s = str_replace(“Ñ”,”N”,$s);
return $s;
}
Saludos
Hola, no se si se dieron cuenta pero puse al principio del post la version actualizada de la funcion:
http://www.ecapy.com/reemplazar-la-n-acentos-espacios-y-caracteres-especiales-con-php-actualizada/
saludos
No hay una función de PHP que realice el trabajo directamente?
noque yo sepa
Espectacular señores!! Funciona a la perfección muchas gracias.
Gracias :). Igualmente te recomiendo la version actualizada de esta funcion: http://www.ecapy.com/reemplazar-la-n-acentos-espacios-y-caracteres-especiales-con-php-actualizada/
Saludos!
function quitarAcentos($text)
{
$text = htmlentities($text, ENT_QUOTES, ‘UTF-8’);
$text = strtolower($text);
$patron = array (
// Espacios, puntos y comas por guion
‘/[., ]+/’ => ‘-‘,
// Vocales
‘/à/’ => ‘a’,
‘/è/’ => ‘e’,
‘/ì/’ => ‘i’,
‘/ò/’ => ‘o’,
‘/ù/’ => ‘u’,
‘/á/’ => ‘a’,
‘/é/’ => ‘e’,
‘/í/’ => ‘i’,
‘/ó/’ => ‘o’,
‘/ú/’ => ‘u’,
‘/â/’ => ‘a’,
‘/ê/’ => ‘e’,
‘/î/’ => ‘i’,
‘/ô/’ => ‘o’,
‘/û/’ => ‘u’,
‘/ã/’ => ‘a’,
‘/&etilde;/’ => ‘e’,
‘/ĩ/’ => ‘i’,
‘/õ/’ => ‘o’,
‘/ũ/’ => ‘u’,
‘/ä/’ => ‘a’,
‘/ë/’ => ‘e’,
‘/ï/’ => ‘i’,
‘/ö/’ => ‘o’,
‘/ü/’ => ‘u’,
‘/ä/’ => ‘a’,
‘/ë/’ => ‘e’,
‘/ï/’ => ‘i’,
‘/ö/’ => ‘o’,
‘/ü/’ => ‘u’,
// Otras letras y caracteres especiales
‘/å/’ => ‘a’,
‘/ñ/’ => ‘n’,
// Agregar aqui mas caracteres si es necesario
);
$text = preg_replace(array_keys($patron),array_values($patron),$text);
return $text;
}
Puede que te interese. hay una nueva version de la funcion que publique en http://ecapy.com/reemplazar-la-n-acentos-espacios-y-caracteres-especiales-con-php-actualizada/