|
|
htmlspecialchars
Wandelt Sonderzeichen in HTML-Codes um
Beschreibung
string htmlspecialchars
( string $string
[, int $flags = ENT_COMPAT | ENT_HTML401
[, string $encoding = ini_get("default_charset")
[, bool $double_encode = true
]]] )
Wenn die Eingabezeichenkette, die dieser Funktion übergeben wird, und das
endgültige Dokument den gleichen Zeichensatz haben, ist diese Funktion
ausreichend um Eingaben für die meisten Kontexte eines HTML-Dokuments
vorzubereiten. Wenn allerdings die Eingabe Zeichen repräsentieren kann, die
nicht im Zeichensatz des endgültigen Dokuments kodiert sind, und Sie wünschen
diese Zeichen zu erhalten (als numerische oder benannte Entities),
kann sowohl diese Funktion wie auch htmlentities (die
nur Teilzeichenketten, die benannte Entity-Entsprechungen haben, kodiert)
ungenügend sein. Sie müssen u.U. mb_encode_numericentity
stattdessen verwenden.
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 ''' (oder '),
wenn
ENT_QUOTES gesetzt ist.
-
'<' (kleiner als) wird zu '<'
-
'>' (größer als) wird zu '>'
Parameter-Liste
-
string
-
Die zu konvertierende Zeichenkette.
-
flags
-
Eine Bitmaske von einem oder mehreren der folgenden Flags, die
die Behandlung von Anführungszeichen, ungültigen Zeichenfolgen
und den genutzten Dokumententyp festlegen.
Der Standardwert ist ENT_COMPAT | ENT_HTML401.
Verfügbare flags Konstanten
| Konstante |
Beschreibung |
ENT_COMPAT |
Konvertiert nur doppelte Anführungszeichen und lässt einfache
Anführungszeichen unverändert.
|
ENT_QUOTES |
Konvertiert sowohl doppelte als auch einfache Anführungszeichen. |
ENT_NOQUOTES |
Lässt doppelte und einfache Anführungszeichen unverändert. |
ENT_IGNORE |
Verwirft ungültige Code Unit Sequenzen anstatt eine leere Zeichenkette
zurückzugeben. Die Nutzung dieser Option ist nicht empfehlenswert, da sie
» Auswirkungen auf die Sicherheit
haben kann.
|
ENT_SUBSTITUTE |
Ersetzt ungültige Code Unit Sequenzen mit einem Unicode Ersatz Zeichen
U+FFFD (UTF-8) oder � (andernfalls) anstatt eine
leere Zeichenkette zurückzugeben.
|
ENT_DISALLOWED |
Ersetzt Codepoints, welche in dem angegebenen Dokumenttyp
ungültig sind, mit einem Unicode Ersatz Zeichen U+FFFD (UTF-8)
oder � (andernfalls), anstatt sie zu belassen.
Das kann zum Beispiel nützlich sein, um die Wohlgeformtheit von
XML-Dokumenten mit eingebetteten externen Inhalten sicherzustellen.
|
ENT_HTML401 |
Behandle Code als HTML 4.01.
|
ENT_XML1 |
Behandle Code als XML 1.
|
ENT_XHTML |
Behandle Code als XHTML.
|
ENT_HTML5 |
Behandle Code als HTML 5.
|
-
charset
-
Ein optionaler Parameter, der die Zeichenkodierung für eine Konvertierung definiert.
Wird dieser Parameter ausgelassen, so wird der Standardwert für encoding
verwendet, welcher von der verwendeten PHP-Version abhängig ist. In PHP 5.6 und neuer wird
die Konfigurationseinstellung default_charset als
Standardwert verwendet. PHP 5.4 und 5.5. verwenden UTF-8 als Standardwert.
Frühere Versionen verwenden ISO-8859-1.
Obwohl dieser Parameter technisch optional ist wird es stark empfohlen den korrekten
Wert für den jeweiligen Programmcode zu spezifizieren, falls sie PHP 5.5 oder früher
verwenden, oder falls default_charset für
die jeweilige Eingabe inkorrekt sein könnte.
Für den Gebrauch dieser Funktion sind die Zeichenkodierungen
ISO-8859-1, ISO-8859-15,
UTF-8, cp866,
cp1251, cp1252 und
KOI8-R tatsächlich äquivalent, vorausgesetzt der
string selbst ist gültig in der
Zeichenkodierung, da die von
htmlspecialchars betroffenen Zeichen in allen
genannten Zeichenkodierungen an gleicher Position stehen.
Die folgenden Zeichensätze werden unterstützt:
Unterstützte Zeichensätze
| Zeichensatz |
Alias |
Beschreibung |
| ISO-8859-1 |
ISO8859-1 |
Westeuropäisch, Latin-1.
|
| ISO-8859-5 |
ISO8859-5 |
Wenig verwendeter kyrillischer Zeichensatz (Latin/Cyrillic).
|
| 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.
|
| cp1251 |
Windows-1251, win-1251, 1251 |
Windows-spezifischer kyrillischer Zeichensatz.
|
| cp1252 |
Windows-1252, 1252 |
Windows spezifischer Zeichensatz für westeuropäische Sprachen.
|
| KOI8-R |
koi8-ru, koi8r |
Russisch.
|
| 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, SJIS-win, cp932, 932 |
Japanisch
|
| EUC-JP |
EUCJP, eucJP-win |
Japanisch
|
| MacRoman |
|
Zeichensatz, der von Mac OS verwendet wurde.
|
| '' |
|
Eine leere Zeichenkette aktiviert die Erkennung durch die Kodierung des
Skripts (Zend multibyte),
default_charset und die
aktuelle Sprachumgebung (siehe nl_langinfo und
setlocale), in dieser Reihenfolge. Nicht
empfehlenswert.
|
Hinweis:
Weitere Zeichensätze sind nicht implementiert. Statt dessen wird die
Standard-Kodierung verwendet und eine Warnung ausgegeben.
-
double_encode
-
Wird der Parameter double_encode ausgeschaltet,
kodiert PHP bereits existierende HTML-Entities nicht noch einmal.
Standardmäßig werden jedoch alle Zeichen konvertiert.
Rückgabewerte
Der konvertierte string.
Enthält der string eine in dem übergebenen
encoding ungültige Code Unit Sequenz, wird eine
leere Zeichenkette zurückgegeben, sofern weder das ENT_IGNORE
noch das ENT_SUBSITUTE Flag gesetzt sind.
Beispiele
Beispiel #1 htmlspecialchars-Beispiel
<?php $neu = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES); echo $neu; // <a href='test'>Test</a> ?>
Anmerkungen
Hinweis:
Beachten Sie, dass diese Funktion nur die o.a. Umwandlungen
durchführt. Für vollständige Code-Umwandlung verwenden Sie bitte
htmlentities.
Siehe auch
- get_html_translation_table
- htmlspecialchars_decode
- strip_tags
- htmlentities
- nl2br
|