Signatur
Beschreibung
get_html_translation_table() liefert ein assoziatives Array, das die Zeichen-zu-HTML-Entitäten-Zuordnung enthält, die PHP intern beim Aufruf von htmlspecialchars() bzw. htmlentities() nutzt. Dies ermöglicht es, die exakte Umwandlungstabelle einzusehen oder für eigene Zwecke weiterzuverwenden.
Der Parameter $table bestimmt, welche Tabelle zurückgegeben wird: HTML_SPECIALCHARS (Standard) liefert nur die wenigen Sonderzeichen wie &, <, > und Anführungszeichen, während HTML_ENTITIES die vollständige Tabelle aller HTML-Entitäten zurückgibt.
Das zurückgegebene Array kann direkt mit strtr() kombiniert werden, um eigene Zeichenersetzungen durchzuführen – auch in umgekehrter Richtung (also HTML-Entitäten zurück in Zeichen), indem man das Array mit array_flip() umkehrt.
Der $flags-Parameter erlaubt die Steuerung, welche Anführungszeichen in die Tabelle aufgenommen werden (ENT_QUOTES, ENT_COMPAT, ENT_HTML5 usw.), analog zu den entsprechenden Parametern bei htmlspecialchars().
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $table | int | HTML_SPECIALCHARS | Bestimmt, welche Tabelle zurückgegeben wird. HTML_SPECIALCHARS liefert nur die von htmlspecialchars() verwendeten Zeichen; HTML_ENTITIES liefert die vollständige Entitätentabelle (wie htmlentities()). |
| $flags | int | ENT_QUOTES | ENT_SUBSTITUTE | Kombination aus Bitmask-Konstanten, die festlegen, welche Anführungszeichen und wie ungültige Zeichenfolgen behandelt werden. Gängige Werte: ENT_COMPAT (nur doppelte Anführungszeichen), ENT_QUOTES (beide), ENT_HTML5 (HTML5-Entitäten). |
| $encoding | string | UTF-8 | Die Zeichenkodierung, für die die Tabelle erzeugt wird. Unterstützte Werte entsprechen denen von htmlspecialchars(), z. B. 'UTF-8', 'ISO-8859-1' oder 'windows-1252'. |
Rückgabewert
'&' => '&').Beispiele
Umwandlungstabelle von htmlspecialchars anzeigen
<?php
$table = get_html_translation_table(HTML_SPECIALCHARS, ENT_QUOTES | ENT_HTML5);
foreach ($table as $char => $entity) {
echo "'" . addcslashes($char, "'") . "' => '" . $entity . "'\n";
}
Eigene Zeichenersetzung mit strtr() und der Umwandlungstabelle
<?php
$text = '<b>Hallo "Welt" & Co.</b>';
// Vorwärts: Zeichen -> HTML-Entitäten
$table = get_html_translation_table(HTML_SPECIALCHARS, ENT_QUOTES);
$encoded = strtr($text, $table);
echo $encoded . "\n";
// Rückwärts: HTML-Entitäten -> Zeichen
$reverseTable = array_flip($table);
$decoded = strtr($encoded, $reverseTable);
echo $decoded . "\n";
Vollständige Entitätentabelle (HTML_ENTITIES) für ISO-8859-1
<?php
$table = get_html_translation_table(HTML_ENTITIES, ENT_QUOTES, 'ISO-8859-1');
// Anzahl der Einträge ausgeben
echo 'Anzahl Entitäten: ' . count($table) . "\n";
// Beispiel: Ü
$char = chr(220); // Ü in ISO-8859-1
if (isset($table[$char])) {
echo "'Ü' wird zu: " . $table[$char] . "\n";
}
// Wichtig · Fallstricke
Hinweis zur Reihenfolge bei strtr(): Wenn die Umwandlungstabelle direkt mit strtr() verwendet wird, beachte, dass strtr() bei Zeichenarrays immer das längste übereinstimmende Zeichen ersetzt. Die Kombination mit array_flip() für die Rückumwandlung ist korrekt, solange keine doppeldeutigen Entitäten vorhanden sind.
Zeichenkodierung: Achte darauf, dass die in get_html_translation_table() angegebene Kodierung mit der tatsächlichen Kodierung deines Strings übereinstimmt. Andernfalls kann es zu fehlerhaften Umwandlungen oder zu Datenverlust kommen.
Nicht als Sicherheitsfunktion verwenden: Für die sichere Ausgabe von Nutzer-Eingaben in HTML sollte direkt htmlspecialchars() oder htmlentities() verwendet werden. Die Tabelle eignet sich eher für diagnostische Zwecke oder den Aufbau eigener Transformations-Pipelines.