Forum und email

htmlspecialchars

(PHP 4, PHP 5)

htmlspecialchars — Wandelt Sonderzeichen in HTML-Codes um

Beschreibung

string htmlspecialchars ( string $string [, int $quote_style [, string $charset [, bool $double_encode ]]] )

Bestimmte Zeichen haben in HTML eine spezielle Bedeutung und sollten in HTML-Code dargestellt werden, um ihre Bedeutung zu behalten. Diese Funktion liefert einen String zurück, in dem manche dieser Konvertierungen durchgeführt wurden. Die hier vorgenommenen Umwandlungen sind die gebräuchlichsten für die tägliche Web-Programmierung. Sofern Sie eine vollständige Konvertierung der HTML-Zeichen benötigen, sollten Sie stattdessen htmlentities() verwenden.

Diese Funktion ist hilfreich, um vom Benutzer gelieferten Text frei von HTML-Code zu halten, wie z.B. in Foren oder Gästebüchern. Das optionale zweite Argument quote_style legt fest, wie einfache und doppelte Anführungszeichen behandelt werden sollen. Die Standardeinstellung ENT_COMPAT ist abwärtskompatibel und behandelt nur die doppelten, nicht aber die einfachen Anführungszeichen. Ist ENT_QUOTES angegeben, werden einfache und doppelte Anführungszeichen umgewandelt, und sofern ENT_NOQUOTES angegeben wurde, bleiben sowohl einfache als auch doppelte Anführungszeichen unberührt.

Folgende Umwandlungen werden vorgenommen:

  • '&' (Ampersand/kaufmännisches Und) wird zu '&'.
  • '"' (doppeltes Anführungszeichen) wird zu '"', wenn ENT_NOQUOTES nicht gesetzt ist.
  • ''' (einfaches Anführungszeichen) wird nur zu ''', wenn ENT_QUOTES gesetzt ist.
  • '<' (kleiner als) wird zu '&lt;'
  • '>' (größer als) wird zu '&gt;'

Example#1 htmlspecialchars()-Beispiel

<?php
$neu 
htmlspecialchars("<a href='test'>Test</a>"ENT_QUOTES);
echo 
$neu// &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
?>

Beachten Sie, dass diese Funktion nur die o.a. Umwandlungen durchführt. Für vollständige Code-Umwandlung verwenden Sie bitte htmlentities(). Die Unterstützung für das optionale zweite Argument wurde in PHP 3.0.17 bzw. PHP 4.0.3. hinzugefügt.

Das dritte Argument charset definiert die für die Konvertierung verwendete Zeichenssatztabelle. Der Default-Zeichensatz ist ISO-8859-1. Die Unterstützung für das dritte Argument wurde mit PHP 4.1.0 eingeführt.

Die folgenden Zeichensätze werden mit PHP 4.3.0 und höher unterstützt:

Unterstützte Zeichensätze
Zeichensatz Alias Beschreibung
ISO-8859-1 ISO8859-1 Westeuropäisch, Latin-1
ISO-8859-15 ISO8859-15 Westeuropäisch, Latin-9. Enthält das Euro-Zeichen sowie französische und finnische Buchstaben, die in Latin-1(ISO-8859-1) fehlen.
UTF-8   ASCII-kompatibles Multi-Byte 8-Bit Unicode.
cp866 ibm866, 866 DOS-spezifischer Kyrillischer Zeichensatz. Dieser Zeichensatz wird ab PHP Version 4.3.2 unterstützt.
cp1251 Windows-1251, win-1251, 1251 Windows-spezifischer Kyrillischer Zeichensatz. Dieser Zeichensatz wird ab PHP Version 4.3.2 unterstützt.
cp1252 Windows-1252, 1252 Windows spezifischer Zeichensatz für westeuropäische Sprachen.
KOI8-R koi8-ru, koi8r Russisch. Dieser Zeichensatz wird ab PHP Version 4.3.2 unterstützt.
BIG5 950 Traditionelles Chinesisch, hauptsächlich in Taiwan verwendet.
GB2312 936 Vereinfachtes Chinesisch, nationaler Standard-Zeichensatz.
BIG5-HKSCS   Big5 mit Hongkong-spezifischen Erweiterungen; traditionelles Chinesisch.
Shift_JIS SJIS, 932 Japanisch
EUC-JP EUCJP Japanisch

Hinweis: Weitere Zeichensätze sind nicht implementiert, an ihrer Stelle wird ISO-8859-1 verwendet.

Wenn double_encode ausgeschaltet ist, verändert PHP keine bereits vorhandenen HTML-Entities. Standardmäßig wird jedoch alles konvertiert. Dieser Parameter wurde mit PHP 5.2.3 hinzugefügt.

Siehe auch get_html_translation_table(), htmlspecialchars_decode(), strip_tags(), htmlentities() und nl2br().