get_html_translation_table()
La función get_html_translation_table() devuelve la tabla de traducción usada por htmlspecialchars() y htmlentities() en PHP.
La función PHP get_html_translation_table() devuelve la tabla de búsqueda exacta que htmlspecialchars() y htmlentities() usan internamente cuando convierten caracteres en entidades HTML. En lugar de aplicar esa conversión, esta función te entrega la tabla en sí misma como un array asociativo, donde cada clave es un carácter sin procesar y cada valor es su entidad — por ejemplo, '<' se mapea a <.
Esto es útil principalmente cuando necesitas inspeccionar qué caracteres se codifican, personalizar la codificación o invertirla intercambiando la tabla.
Sintaxis
get_html_translation_table(
int $table = HTML_SPECIALCHARS,
int $flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401,
string $encoding = "UTF-8"
): arrayLos tres parámetros son opcionales:
$table— qué tabla devolver. Una de dos constantes:HTML_SPECIALCHARS(predeterminada) — el pequeño conjunto usado porhtmlspecialchars():&,",',<,>.HTML_ENTITIES— el conjunto completo usado porhtmlentities(), que abarca cientos de caracteres como©,éy¡.
$flags— controla el manejo de comillas y el tipo de documento (consulta Indicadores de comillas y documento más abajo).$encoding— la codificación de caracteres (por ejemplo,"UTF-8"o"ISO-8859-1"). Afecta a qué secuencias de bytes se mapean los caracteres en la tabla devuelta.
La función devuelve un array. Nunca devuelve false, por lo que no hay caso de error que manejar para argumentos válidos.
Devolver la tabla de htmlspecialchars
Con la tabla HTML_SPECIALCHARS predeterminada obtienes los cinco caracteres más importantes para una salida HTML segura:
Salida:
Array
(
["] => "
[&] => &
['] => '
[<] => <
[>] => >
)Como se pasó ENT_QUOTES, tanto la comilla doble (") como la comilla simple (') aparecen en la tabla. Con el valor predeterminado ENT_COMPAT, la comilla simple estaría ausente.
Devolver la tabla completa de htmlentities
Al pasar HTML_ENTITIES se devuelve la tabla completa — más de 250 entradas, incluidas letras acentuadas y símbolos:
Las primeras entradas tienen este aspecto:
Array
(
["] => "
[&] => &
['] => '
[<] => <
[>] => >
[ ] =>
[¡] => ¡
[¢] => ¢
...
)Esta es la tabla que recorre htmlentities() para convertir texto. Si solo te importan los caracteres significativos para el marcado, prefiere HTML_SPECIALCHARS — es más pequeña y más rápida de recorrer.
Indicadores de comillas y documento
El parámetro $flags combina un indicador de estilo de comillas con un indicador opcional de tipo de documento usando el operador OR a nivel de bits (|). Los valores más comunes son:
ENT_COMPAT— codifica las comillas dobles y deja las simples sin modificar.ENT_QUOTES— codifica tanto las comillas dobles como las simples.ENT_NOQUOTES— deja ambos tipos de comillas sin modificar.ENT_HTML401— usa el conjunto de entidades HTML 4.01 (el tipo de documento predeterminado).ENT_HTML5— usa el conjunto de entidades HTML5.ENT_XML1— usa el conjunto de entidades XML 1.0.ENT_XHTML— usa el conjunto de entidades XHTML.
Aquí ENT_QUOTES | ENT_HTML401 solicita que ambos tipos de comillas se codifiquen usando los nombres de entidades de HTML 4.01. Cambiar el indicador de documento a ENT_HTML5 modificaría algunos nombres de entidades (por ejemplo, la comilla simple pasa a ser ' en lugar de ').
Uso práctico: invertir la tabla
Un motivo real habitual para obtener la tabla es construir un mapa de decodificación intercambiando claves y valores con array_flip(). Luego puedes convertir entidades de vuelta en caracteres sin procesar con strtr():
<?php
$table = get_html_translation_table(HTML_SPECIALCHARS, ENT_QUOTES);
$flipped = array_flip($table);
echo strtr("<b>Bold & bright</b>", $flipped);
// Output: <b>Bold & bright</b>
?>Para la decodificación cotidiana normalmente recurrirías a las funciones dedicadas htmlspecialchars_decode() o html_entity_decode() — pero la tabla invertida es útil cuando necesitas un mapeo personalizado o parcial.
Cuándo usarla
Recurre a get_html_translation_table() cuando quieras:
- Auditar exactamente qué caracteres codificará una combinación determinada de indicadores y codificación.
- Construir un mapeo personalizado o invertido que las funciones estándar de codificación/decodificación no cubran.
- Generar documentación o pruebas que listen todas las conversiones de entidades.
Para simplemente codificar la salida, usa htmlspecialchars() o htmlentities() directamente.