htmlspecialchars() ist eine PHP-Funktion, die einen String als Eingabe akzeptiert und dann spezielle HTML-Zeichen wie <>&" in sichere Zeichen umwandelt. Dies ist insbesondere für Benutzer, die über Text-Eingabefelder Eingaben vornehmen, sehr hilfreich.
Ohne diese Funktion können böswillige Benutzer Skripteingaben vornehmen, man spricht dann von Cross-Site-Scripting (XSS). Diese böswilligen Skripte können dann dazu benutzt werden, private Informationen zu stehlen oder Schaden anzurichten. Mit der PHP Funktion: htmlspecialchars() Funktion können diese Skripte jedoch neutralisiert werden, da sie HTML-Zeichen in sichere Zeichen konvertiert.
Der Syntax ist:
htmlspecialchars($string, $flags, $encoding, $double_encode);
Erklärung:
Der erste Parameter $string ist der String, der umgewandelt werden soll und der zweite Parameter $flags ist optional. Er definiert, welche HTML-Entitys umgewandelt werden sollen. Nachfolgen eine Auflistung der $flags welche verwenden werden können:
- ENT_COMPAT
- Ersetzt nur Anführungszeichen (") durch HTML-Entities
- ENT_QUOTES
- Ersetzt sowohl Anführungszeichen (") als auch Apostrophe (') durch HTML-Entities
- ENT_NOQUOTES
- Ersetzt keine Anführungszeichen oder Apostrophen.
- ENT_IGNORE
- Ignoriert ungültige UTF-8 Zeichen und ersetzt diese durch keine Entitäten.
- ENT_SUBSTITUTE
- Ersetzt ungültige UTF-8 Sequenzen mit einem Ersatzzeichen.
- ENT_DISALLOWED
- Ersetzt alle nicht erlaubten Zeichen mit HTML-Entitäten.
- ENT_HTML401
- Konvertiert Zeichen wie &kleiner; und &größer; in HTML4.01 Entitäten.
- ENT_XML1
- Konvertiert Zeichen wie &kleiner; und &größer; in XML1.0 Entitäten.
- ENT_XHTML
- Konvertiert Zeichen wie &kleiner; und &größer; in XHTML Entitäten.
- ENT_HTML5
- Konvertiert Zeichen wie &kleiner; und &größer; in HTML5 Entitäten.
Der dritte Parameter $encoding ist optional und bestimmt die verwendete Zeichenkodierung. Die wichtigsten Zeichenkodierungen, die von htmlspecialchars() unterstützt werden, sind UTF-8 (alias: "utf-8"), ISO-8859-1 (alias: "iso-8859-1"), ISO-8859-15 (alias: "iso-8859-15") und Windows-1252 (alias: "Windows-1252").
- UTF-8 ist eine multibyte-Zeichenkodierung, die für die Darstellung von Unicode-Zeichen verwendet wird.
- ISO-8859-1 ist eine 8-Bit-Single-Byte-Zeichenkodierung, die hauptsächlich in der westeuropäischen Region verwendet wird.
- ISO-8859-15 ist eine 8-Bit-Single-Byte-Zeichenkodierung, die hauptsächlich in der europäischen Region verwendet wird.
- Windows-1252 ist eine 8-Bit-Single-Byte-Zeichenkodierung, die hauptsächlich in der Windows-Region verwendet wird.
Der vierte Parameter $double_encode bestimmt, ob bereits existierende HTML-Entitys umgewandelt werden sollen oder nicht.
Die Funktion htmlspecialchars() gibt einen umgewandelten String zurück.
Beispiel 1:
<?php
$string = "<p>Das ist ein Test</p>";
echo htmlspecialchars($string);
?>
Ausgabe:
<p>Das ist ein Test</p>
Beispiel 2:
<?php
$string = "Schon &mal wieder ein Test";
echo htmlspecialchars($string, ENT_QUOTES, 'UTF-8', false);
?>
Ausgabe:
Schon &mal wieder ein Test
Fragen zur Funktion htmlspecialchars():
Die Funktion htmlspecialchars() ist eine nützliche Funktion, um spezielle HTML-Zeichen in sichere Zeichen umzuwandeln. In diesem Text stellen wir einige Fragen, um die Funktion besser zu verstehen.
- Was ist die Funktion htmlspecialchars()?
- Die Funktion htmlspecialchars() ist eine PHP-Funktion, die eine Zeichenfolge als Eingabe akzeptiert und spezielle HTML-Zeichen wie <>&" in sichere Zeichen umwandelt.
- Was sind die Parameter der Funktion htmlspecialchars()?
- Die Funktion htmlspecialchars() hat vier Parameter: $string, $flags, $encoding und $double_encode. Der erste Parameter $string ist der String, der umgewandelt werden soll und der zweite Parameter $flags ist optional und bestimmt, welche HTML-Entitys umgewandelt werden sollen. Der dritte Parameter $encoding ist optional und bestimmt die verwendete Zeichenkodierung. Beim vierte Parameter $double_encode bestimmen Sie, ob bereits existierende HTML-Entitys umgewandelt werden sollen oder nicht.
- Was ist der Rückgabewert der Funktion htmlspecialchars()?
- Der Rückgabewert der Funktion htmlspecialchars() ist ein umgewandelter String.
- Was sind die möglichen Werte für den zweiten Parameter $flags?
- Es gibt, mehre mögliche Werte für den Parameter $flags zu verwenden, ein paar hiervon sind: ENT_COMPAT, ENT_QUOTES, ENT_NOQUOTES, ENT_HTML401.
- Was bedeutet der vierte Parameter $double_encode?
- Der vierte Parameter $double_encode bestimmt, ob bereits existierende HTML-Entitys umgewandelt werden sollen oder nicht. Wenn $double_encode auf true gesetzt ist, werden bereits existierende HTML-Entitys umgewandelt. Wenn $double_encode auf false gesetzt ist, werden bereits existierende HTML-Entitys nicht umgewandelt.
- Was ist der Unterschied zwischen ENT_COMPAT und ENT_QUOTES?
- Der Unterschied zwischen ENT_COMPAT und ENT_QUOTES ist, dass ENT_COMPAT nur die doppelten Anführungszeichen (") umgewandelt wird, während ENT_QUOTES sowohl die doppelten als auch die einfachen Anführungszeichen (') umgewandelt werden.
- Was macht die Funktion htmlspecialchars() mit dem Parameter $encoding?
- Der Parameter $encoding bestimmt die verwendete Zeichenkodierung. Die Funktion htmlspecialchars() konvertiert alle Zeichen in die angegebene Zeichenkodierung.
- Was passiert, wenn kein Parameter $flags angegeben wird?
- Wenn kein Parameter $flags angegeben wird, werden alle HTML-Entitys umgewandelt.
- Was ist der Unterschied zwischen ENT_HTML401 und ENT_NOQUOTES?
- Der Unterschied zwischen ENT_HTML401 und ENT_NOQUOTES ist, dass ENT_HTML401 auch die folgenden Entitys umgewandelt: &, ", <, >. Während ENT_NOQUOTES nur die Anführungszeichen (") umgewandelt.
- Wie verhindert man, dass bereits existierende HTML-Entitys umgewandelt werden?
- Um zu verhindern, dass bereits existierende HTML-Entitys umgewandelt werden, muss der Parameter $double_encode auf false gesetzt werden.
- Wo ist der Unterschied zwischen htmlspecialchars() und htmlentities()?
- Der Unterschied zwischen htmlspecialchars() und htmlentities() liegt darin, dass htmlspecialchars() nur bestimmte HTML-Zeichen wie <>&" umgewandelt werden, während htmlentities() alle Zeichen in HTML-Entitys umwandelt.