get_html_translation_table()
Die Funktion get_html_translation_table() gibt die Übersetzungstabelle zurück, die von htmlspecialchars() und htmlentities() verwendet wird.
Die PHP-Funktion get_html_translation_table() gibt die genaue Nachschlagetabelle zurück, die htmlspecialchars() und htmlentities() intern verwenden, wenn sie Zeichen in HTML-Entities umwandeln. Anstatt diese Konvertierung anzuwenden, übergibt diese Funktion die Tabelle selbst als assoziatives array, wobei jeder Schlüssel ein Rohzeichen und jeder Wert die zugehörige Entity ist — zum Beispiel wird '<' auf < abgebildet.
Dies ist hauptsächlich nützlich, wenn Sie genau prüfen möchten, welche Zeichen kodiert werden, die Kodierung anpassen oder sie durch Umkehren der Tabelle rückgängig machen möchten.
Syntax
get_html_translation_table(
int $table = HTML_SPECIALCHARS,
int $flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401,
string $encoding = "UTF-8"
): arrayAlle drei Parameter sind optional:
$table— welche Tabelle zurückgegeben werden soll. Einer von zwei Konstanten:HTML_SPECIALCHARS(Standard) — der kleine Satz, der vonhtmlspecialchars()verwendet wird:&,",',<,>.HTML_ENTITIES— der vollständige Satz, der vonhtmlentities()verwendet wird und Hunderte von Zeichen wie©,éund¡abdeckt.
$flags— steuert die Behandlung von Anführungszeichen und den Dokumenttyp (siehe Anführungszeichen- und Dokumentflags weiter unten).$encoding— die Zeichenkodierung (zum Beispiel"UTF-8"oder"ISO-8859-1"). Sie beeinflusst, welchen Byte-Sequenzen die Zeichen in der zurückgegebenen Tabelle zugeordnet werden.
Die Funktion gibt ein array zurück. Sie gibt niemals false zurück, sodass es bei gültigen Argumenten keinen Fehlerfall zu behandeln gibt.
Die htmlspecialchars-Tabelle zurückgeben
Mit der Standard-Tabelle HTML_SPECIALCHARS erhalten Sie die fünf Zeichen, die für eine sichere HTML-Ausgabe am wichtigsten sind:
Ausgabe:
Array
(
["] => "
[&] => &
['] => '
[<] => <
[>] => >
)Da ENT_QUOTES übergeben wurde, erscheinen sowohl das doppelte Anführungszeichen (") als auch das einfache Anführungszeichen (') in der Tabelle. Mit dem Standard ENT_COMPAT würde das einfache Anführungszeichen fehlen.
Die vollständige htmlentities-Tabelle zurückgeben
Das Übergeben von HTML_ENTITIES gibt die vollständige Tabelle zurück — über 250 Einträge, darunter Buchstaben mit Akzenten und Symbole:
Die ersten wenigen Einträge sehen so aus:
Array
(
["] => "
[&] => &
['] => '
[<] => <
[>] => >
[ ] =>
[¡] => ¡
[¢] => ¢
...
)Dies ist die Tabelle, die htmlentities() durchläuft, um Text zu konvertieren. Wenn Sie sich nur um die markup-relevanten Zeichen kümmern, bevorzugen Sie HTML_SPECIALCHARS — es ist kleiner und schneller zu durchsuchen.
Anführungszeichen- und Dokumentflags
Der Parameter $flags kombiniert ein Anführungszeichen-Flag mit einem optionalen Dokumenttyp-Flag mithilfe des bitweisen OR-Operators (|). Die häufigsten Werte sind:
ENT_COMPAT— doppelte Anführungszeichen kodieren, einfache Anführungszeichen unberührt lassen.ENT_QUOTES— sowohl doppelte als auch einfache Anführungszeichen kodieren.ENT_NOQUOTES— beide Anführungszeichentypen unberührt lassen.ENT_HTML401— den HTML 4.01-Entity-Satz verwenden (der Standard-Dokumenttyp).ENT_HTML5— den HTML5-Entity-Satz verwenden.ENT_XML1— den XML 1.0-Entity-Satz verwenden.ENT_XHTML— den XHTML-Entity-Satz verwenden.
Hier fordert ENT_QUOTES | ENT_HTML401, dass beide Anführungszeichentypen mit den HTML 4.01-Entity-Namen kodiert werden. Das Wechseln des Dokumentflags zu ENT_HTML5 würde einige Entity-Namen ändern (zum Beispiel wird das einfache Anführungszeichen zu ' statt ').
Praktische Anwendung: die Tabelle umkehren
Ein häufiger praktischer Grund zum Abrufen der Tabelle ist das Erstellen einer Dekodierungszuordnung, indem Schlüssel und Werte mit array_flip() vertauscht werden. Anschließend können Sie Entities mit strtr() wieder in Rohzeichen umwandeln:
<?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>
?>Für die alltägliche Dekodierung würden Sie normalerweise die dedizierten Funktionen htmlspecialchars_decode() oder html_entity_decode() verwenden — aber die umgekehrte Tabelle ist praktisch, wenn Sie eine benutzerdefinierte oder partielle Zuordnung benötigen.
Wann verwenden
Greifen Sie auf get_html_translation_table() zurück, wenn Sie:
- genau prüfen möchten, welche Zeichen eine bestimmte Flag/Kodierungs-Kombination kodieren wird.
- eine benutzerdefinierte oder umgekehrte Zuordnung erstellen möchten, die die standardmäßigen Kodierungs-/Dekodierungsfunktionen nicht abdecken.
- Dokumentation oder Tests erstellen möchten, die jede Entity-Konvertierung auflisten.
Für die einfache Ausgabekodierung verwenden Sie stattdessen direkt htmlspecialchars() oder htmlentities().