PHP – Convertir tildes a códigos HTML

A veces se almacena en la base de datos texto y para evitar problemas con la codificación del mismo, podemos preferir guardar las palabras con tildes usando el código HTML para cada una.

Aquí se puede ver la equivalencia de todos los códigos HTML.

Para realizar estas conversiones, php nos da dos funciones: htmlentities y html_entity_decode.

HTML TEXTO
Códigos HTML para las tildes.
á a
é e
í i
ó o
ú u

En el ejemplo siguiente, odo carácter convertible a código HTML se convertira, incluyendo gracias a ENT_QUOTES todo tipo de comillas y usandose para ello la codificación UTF-8.

 

$texto = htmlentities("ejemplo á é í ó ú ñ", ENT_QUOTES, "UTF-8");

Y a la inversa:

$texto = html_entity_decode("ejemplo ñ", ENT_QUOTES, "UTF-8");

 

Si sólo quieres realizar las conversiones para un pack de caracteres en concreto, como tildes y la ñ (ya sea en mayúsculas o minúsculas), es más conveniente hacerse alguna función propia para ello.

    /**
     * Convierte las tildes de un texto a sus entidades HTML.
     * 
     * @param string $cadena Cadena a modificar.
     * @return string Cadena de texto con codigos html.
     */
	public static function TildesHtml($cadena) 
	{ 
        return str_replace(array("á","é","í","ó","ú","ñ","Á","É","Í","Ó","Ú","Ñ"),
                                         array("á","é","í","ó","ú","ñ",
                                                    "Á","É","Í","Ó","Ú","Ñ"), $cadena);     
	}

Con str_replace se cambian cadenas por otras o como en el ejemplo, arrays por otros.

 

34677 visitas.

7 comentarios sobre “PHP – Convertir tildes a códigos HTML

  1. Muchas gracias por hacer este artículo, me has ayudado a resolver mi problema. No solo eso sino también a utilizar la funcion htmlentities, pulgar arriba.

  2. Muy buen aporte, me funciono muy bien; solo para las personas que requieran presentar el codigo html en pantalla le hice el siguiente cambio:

    public function TildesHtml($cadena) {
    return (str_replace(array(«á»,»é»,»í»,»ó»,»ú»,»ñ»,»Á»,»É»,»Í»,»Ó»,»Ú»,»Ñ»),
    array(«&».»aacute;»,»&».»eacute;»,»&».»iacute;»,»&».»oacute;»,»&».»uacute;»,»&».»ntilde;»,
    «&».»Aacute;»,»&».»Eacute;»,»&».»Iacute;»,»&».»Oacute;»,»&».»Uacute;»,»&».»Ntilde;»), $cadena));
    }

    Saludos

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *