Start · Sprachen · PHP · Referenz · get_html_translation_table

get_html_translation_table

Funktion

Gibt die Zeichenumwandlungstabelle zurück, die von <code>htmlspecialchars()</code> oder <code>htmlentities()</code> intern verwendet wird.

seit PHP 4.0.0 Kategorie: string

Signatur

get_html_translation_table(int $table = HTML_SPECIALCHARS, int $flags = ENT_QUOTES | ENT_SUBSTITUTE, string $encoding = 'UTF-8'): array

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

Typ
array
Beschreibung
Gibt ein assoziatives Array zurück, bei dem die Schlüssel die originalen Zeichen und die Werte die zugehörigen HTML-Entitäten sind (z. B. '&' => '&amp;').

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";
}
'"' => '&quot;' '&' => '&amp;' '<' => '&lt;' '>' => '&gt;' '\'' => '&apos;'

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";
&lt;b&gt;Hallo &quot;Welt&quot; &amp; Co.&lt;/b&gt; <b>Hallo "Welt" & Co.</b>

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";
}
Anzahl Entitäten: 1039 'Ü' wird zu: &Uuml;

// 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.