Was sind die Unterschiede zwischen htmlspecialchars()
und htmlentities()
. Wann sollte ich das eine oder andere verwenden?
Aus der PHP-Dokumentation für HTML-Entitäten :
Diese Funktion ist
htmlspecialchars()
in jeder Hinsicht identisch , außer dasshtmlentities()
alle Zeichen, die Entitätsäquivalente für HTML-Zeichen aufweisen, in diese Entitäten übersetzt werden.
Aus der PHP-Dokumentation für htmlspecialchars :
Bestimmte Zeichen haben in HTML eine besondere Bedeutung und sollten durch HTML-Entitäten dargestellt werden, um ihre Bedeutung zu erhalten. Diese Funktion gibt eine Zeichenfolge mit einigen dieser Konvertierungen zurück. Die Übersetzungen sind die nützlichsten für die tägliche Webprogrammierung. Wenn Sie die Übersetzung aller HTML-Zeichenelemente benötigen, verwenden Sie
htmlentities()
stattdessen.
Der Unterschied ist, was verschlüsselt wird. Die Auswahlmöglichkeiten sind alles (Entitäten) oder "Sonderzeichen", wie kaufmännisches Und, doppelte und einfache Anführungszeichen, kleiner als und größer als (Sonderzeichen).
Ich bevorzuge es htmlspecialchars
wann immer möglich zu verwenden.
Zum Beispiel:
echo htmlentities('<Il était une fois un être>.');
// Output: <Il était une fois un être>.
// ^^^^^^^^ ^^^^^^^
echo htmlspecialchars('<Il était une fois un être>.');
// Output: <Il était une fois un être>.
// ^ ^
htmlspecialchars()
wann immer dies möglich ist, abgesehen von den offensichtlichen Unterschieden? Welche Situationen werdenhtmlentities()
Ihnen Probleme bereiten, anderehtmlspecialchars()
nicht?htmlentities
undhtmlspecialchars
können beide UTF-8 verarbeiten, solange Sie"UTF-8"
für das dritte Argument angeben .htmlspecialchars
könnte genutzt werden:Wenn nicht alle Zeichen codiert werden müssen, deren HTML-Entsprechungen vorliegen.
Wenn Sie wissen, dass die Seitencodierung mit den speziellen Textsymbolen übereinstimmt, warum sollten Sie diese verwenden
htmlentities
?htmlspecialchars
ist sehr einfach und erzeugt weniger Code, der an den Client gesendet werden muss.Zum Beispiel:
Der zweite ist kürzer und verursacht keine Probleme, wenn der Zeichensatz ISO-8859-1 eingestellt ist.
Wenn die Daten nicht nur über einen Browser verarbeitet werden (um das Dekodieren von HTML-Entitäten zu vermeiden),
Wenn die Ausgabe XML ist (siehe die Antwort von Artefacto ).
quelle
Dies wird mit codiert
htmlentities
.implode( "\t", array_values( get_html_translation_table( HTML_ENTITIES ) ) )
::Dies wird mit codiert
htmlspecialchars
.implode( "\t", array_values( get_html_translation_table( HTML_SPECIALCHARS ) ) )
::quelle
Weil:
htmlentities
mehr Zeichen als ersetzt werdenhtmlspecialchars
. Dies ist nicht erforderlich, macht das PHP-Skript weniger effizient und den resultierenden HTML-Code weniger lesbar.htmlentities
Dies ist nur erforderlich, wenn Ihre Seiten Codierungen wie ASCII oder LATIN-1 anstelle von UTF-8 verwenden und Sie Daten mit einer anderen Codierung als die der Seite verarbeiten.quelle
Sie sollten verwenden,
htmlspecialchars($strText, ENT_QUOTES)
wenn Ihre Zeichenfolge nur XML- und HTML-sicher sein soll:Zum Beispiel codieren
Wenn Sie jedoch auch zusätzliche Zeichen haben, die Unicode oder ungewöhnliche Symbole in Ihren Text dann sollten Sie htmlentities () verwenden , um sie richtig in Ihre HTML - Seite sicherzustellen angezeigt.
Anmerkungen:
quelle
htmlspecialchars ()
führt die Mindestcodierungsmenge aus, um sicherzustellen, dass Ihre Zeichenfolge nicht als HTML analysiert wird. Dadurch ist Ihre Zeichenfolge besser lesbar als bei Verwendunghtmlentities ()
absolut alles codiert hätten, was eine Codierung enthält.quelle
Ich habe gerade von der
get_html_translation_table
Funktion erfahren. Sie übergeben esHTML_ENTITIES
oderHTML_SPECIALCHARS
und es gibt ein Array mit den Zeichen zurück, die codiert werden und wie sie codiert werden.quelle
htmlentities - Konvertiert alle zutreffenden Zeichen in HTML-Entitäten.
htmlspecialchars - Konvertieren Sie Sonderzeichen in HTML-Entitäten.
Bei den Übersetzungen wurden folgende Übersetzungszeichen ausgeführt:
Sie können den folgenden Code überprüfen, um weitere Informationen zu HTML-Eigenschaften und HTML-Spezialchars zu erhalten:
https://gist.github.com/joko-wandiro/f5c935708d9c37d8940b
quelle
Sie möchten wahrscheinlich eine Unicode-Zeichencodierung verwenden, z. B. UTF-8 und htmlspecialchars. Da ist es nicht irgendeine Notwendigkeit „HTML - Entitäten“ für „alle [die] anwendbar Zeichen“ zu erzeugen (das , was htmlentities ist tut nach der Dokumentation) , wenn es bereits in Ihrem Zeichensatz ist.
quelle
Ein kleines Beispiel: Ich musste 2 Client-Namen in einer Funktion indizieren lassen:
Ich habe ursprünglich
$term = get_term_by('name', htmlentities($name), 'client');
zu Begriffsnamen geführt, die nur das kaufmännische Und-Element (&), nicht aber das Element mit Akzent enthielten. Aber als ich die Variableneinstellung aufhtmlspecialchars
beide änderte, konnten beide die Funktion durchlaufen. Hoffe das hilft!quelle
Die Unterschiede zwischen htmlspecialchars () und htmlentities () sind sehr gering. Sehen wir uns einige Beispiele an:
htmlspecialchars (Zeichenfolge $ string) verwendet mehrere Argumente, wobei das erste Argument eine Zeichenfolge ist und alle anderen Argumente (bestimmte Flags, bestimmte Codierungen usw.) optional sind. htmlspecialchars konvertiert Sonderzeichen in der Zeichenfolge in HTML-Entitäten. Zum Beispiel , wenn Sie <br> in der Zeichenfolge, htmlspecialchars wird es in konvertieren & lt; b & gt; . Während Zeichen wie µ † usw. in HTML keine besondere Bedeutung haben. Daher werden sie von der Funktion htmlspecialchars nicht in HTML-Entitäten konvertiert , wie im folgenden Beispiel gezeigt.
htmlentities (string $ string) ist htmlspecialchars sehr ähnlich und verwendet mehrere Argumente, wobei das erste Argument ein String ist und alle anderen Argumente optional sind (bestimmte Flags, bestimmte Codierungen usw.). Im Gegensatz zu htmlspecialchars , htmlentities wandelt nicht nur Sonderzeichen in der Zeichenfolge in HTML - Entitäten , sondern alle geeigneten Zeichen in HTML - Entitäten.
quelle
https://dev.w3.org/html5/html-author/charref
Nicht vollständig, pls verfolgen den Link für vollständig Dokument.
quelle