Icono del sitio Códigos de Programación

Quitar acentos y tildes en PHP

Cuando trabajamos con cadenas de texto en ocasiones resulta útil quitar acentos, tildes y otros símbolos por diversos motivos.

En PHP disponemos de la función str_replace que reemplaza un string por otro, la sintaxis es la siguiente:

str_replace(search, replace, subject, count);

/*
search: El valor a ser buscado.
replace: El valor de reemplazo que sustituye los valores encontrados de search. Un array puede ser utilizado para designar reemplazos múltiples.
subject: El string o array sobre el que se busca y se sustituye.
count: Si es pasado, con este se establece el número de reemplazos realizados.

*Documentación oficial PHP www.php.net
*/

Teniendo en cuenta esto realizaremos una función que permita reemplazar acentos, tildes y otros caracteres de una cadena.

function eliminar_acentos($cadena){
		
		//Reemplazamos la A y a
		$cadena = str_replace(
		array('Á', 'À', 'Â', 'Ä', 'á', 'à', 'ä', 'â', 'ª'),
		array('A', 'A', 'A', 'A', 'a', 'a', 'a', 'a', 'a'),
		$cadena
		);

		//Reemplazamos la E y e
		$cadena = str_replace(
		array('É', 'È', 'Ê', 'Ë', 'é', 'è', 'ë', 'ê'),
		array('E', 'E', 'E', 'E', 'e', 'e', 'e', 'e'),
		$cadena );

		//Reemplazamos la I y i
		$cadena = str_replace(
		array('Í', 'Ì', 'Ï', 'Î', 'í', 'ì', 'ï', 'î'),
		array('I', 'I', 'I', 'I', 'i', 'i', 'i', 'i'),
		$cadena );

		//Reemplazamos la O y o
		$cadena = str_replace(
		array('Ó', 'Ò', 'Ö', 'Ô', 'ó', 'ò', 'ö', 'ô'),
		array('O', 'O', 'O', 'O', 'o', 'o', 'o', 'o'),
		$cadena );

		//Reemplazamos la U y u
		$cadena = str_replace(
		array('Ú', 'Ù', 'Û', 'Ü', 'ú', 'ù', 'ü', 'û'),
		array('U', 'U', 'U', 'U', 'u', 'u', 'u', 'u'),
		$cadena );

		//Reemplazamos la N, n, C y c
		$cadena = str_replace(
		array('Ñ', 'ñ', 'Ç', 'ç'),
		array('N', 'n', 'C', 'c'),
		$cadena
		);
		
		return $cadena;
	}

 

Veamos un ejemplo utilizando la función creada para reemplazar los acentos de algunas palabras:

$cadena = "Árbol lápiz Élite Félix Índice mí Órbita natación Único algún Ñoño";

echo 'Original: ' . $cadena;
echo 'Reemplazo: ' . eliminar_acentos($cadena);

Resultado

Original: Árbol lápiz Élite Félix Índice mí Órbita natación Único algún Ñoño
Reemplazo: Arbol lapiz Elite Felix Indice mi Orbita natacion Unico algun Nono

 

Consejos:

Dependiendo del tipo de codificación que utilicemos puede no reemplazar los caracteres y regresar caracteres aun mas extraños:

Original: �rbol l�piz �lite F�lix �ndice m� �rbita nataci�n �nico alg�n �o�o
Reemplazo: �rbol l�piz �lite F�lix �ndice m� �rbita nataci�n �nico alg�n �o�o

Original: Árbol lápiz Élite Félix Índice mí Órbita natación Único algún Ñoño
Reemplazo: Árbol lápiz Élite Félix Índice mí Órbita natación Único algún Ñoño

Esto podemos solucionarlo agregando primero una codificación en formato utf8 después de iniciar la función (utf8_decode o utf8_encode):

function eliminar_acentos($cadena){
		
		$cadena = utf8_decode($cadena);

// o

		$cadena = utf8_encode($cadena);

.
.
.
}

*No ambas al mismo tiempo.

 

 

Salir de la versión móvil