Murphy's World @ home

server holyghost alias dyndns.murphys-world.de

START
Projekt Murphy's CMSmini JavaScript TIPPS & TRICKS GeoCaching
NEWS TERMINE FUNSTUFF LINKS
VIP-BEREICH KONTAKT IMPRESSUM

JavaScript Tipps & Tricks
String-Funktion htmlentities()

Beschreibung:

Möchte man Texte mit JavaScript oder JScript direkt in ein HTML-Dokument ausgeben, was beispielsweise mit document.write() oder innerHTML geschehen kann, steht man vor dem Problem, dass bestimmte Zeichen vom Webbrowser als HTML Befehle interpretiert werden und sprachspezifische Sonderzeichen wie Umlaute von der eingestellten Zeichencodierung des Webbrowsers abhängen. Unerwünschte Anzeigefehler sind die Folge.

Neben diesem eher kosmetischen Problem besteht speziell bei Daten aus externen oder unbekannten Quellen auch immer die Gefahr eines Code Injection Angriffs, bei dem bösartiger Fremdcode in die eigene Seite eingeschleust wird. Eine oft verwendete Quelle sind z.B. URL-Parameter (auch als Query-String bezeichnet), auf die man in JavaScript und JScript mittels location.search Zugriff hat.

Die nachfolgend beschriebene Funktion htmlentities() für JavaScript bzw. JScript ersetzt neben den vier HTML-eigenen Zeichen auch alle Zeichen des erweiterten ISO-8859-1 Zeichensatz (Bytewert 160 bis 255). Sie bietet einen ähnlichen Funktionsumfang wie ihr PHP Vorbild.

Die Funktion erwartet einen oder zwei Parameter. Der erste Parameter enthält den zu maskierenden String. Mit dem optionalen zweiten Parameter steuert man - wie in der originalen PHP-Funktion - die Maskierung von einfachen und doppelten Anführungszeichen. Dabei sind folgende Werte definiert:

0 = Keine Anführungszeichen umwandeln
1 = Nur einfache Anführungszeichen umwandeln
2 = Nur doppelte Anführungszeichen umwandeln (Standardeinstellung)
3 = Beide Arten (einfache und doppelte Anführungszeichen) umwandeln

Wenn nur die vier HTML-eigenen Zeichen < (Kleiner-Zeichen), > (Größer-Zeichen), & (Kaufmanns-Und) und " (Doppelte Anführungszeichen) ersetzt werden sollen, ist die Funktion htmlspecialchars() besser geeignet.

 

Syntax:

string htmlentities ( string str , [integer typ] )

 

Übergabewerte:

str = der zu maskierende String
typ = Art der Maskierung (optional)

 

Quelltext:

ab JavaScript 1.2

function htmlentities(str,typ) {
  if(typeof str=="undefined") str="";
  if(typeof typ!="number") typ=2;
  typ=Math.max(0,Math.min(3,parseInt(typ)));
  var html=new Array();
  html[38]="amp"; html[60]="lt"; html[62]="gt";
  if(typ==1 || typ==3) html[39]="#039";
  if(typ==2 || typ==3) html[34]="quot";
  for(var i in html)
    eval("str=str.replace(/"+String.fromCharCode(i)+"/g,\"&"+html[i]+";\");");
  var entity=new Array(
    "nbsp","iexcl","cent","pound","curren","yen","brvbar","sect",
    "uml","copy","ordf","laquo","not","shy","reg","macr",
    "deg","plusmn","sup2","sup3","acute","micro","para","middot",
    "cedil","sup1","ordm","raquo","frac14","frac12","frac34","iquest",
    "Agrave","Aacute","Acirc","Atilde","Auml","Aring","AElig","Ccedil",
    "Egrave","Eacute","Ecirc","Euml","Igrave","Iacute","Icirc","Iuml",
    "ETH","Ntilde","Ograve","Oacute","Ocirc","Otilde","Ouml","times",
    "Oslash","Ugrave","Uacute","Ucirc","Uuml","Yacute","THORN","szlig",
    "agrave","aacute","acirc","atilde","auml","aring","aelig","ccedil",
    "egrave","eacute","ecirc","euml","igrave","iacute","icirc","iuml",
    "eth","ntilde","ograve","oacute","ocirc","otilde","ouml","divide",
    "oslash","ugrave","uacute","ucirc","uuml","yacute","thorn","yuml"
  );
  for(var i in entity)
    eval("str=str.replace(/"+String.fromCharCode(i*1+160)+"/g,\"&"+entity[i]+";\");");
  return str;
}

 

Beispiel:

Eingabe

<script type="text/javascript">
chars = "ä ö ü ß < > & \" '";
alert (
  htmlentities ( chars, 0 ) + "\n" +
  htmlentities ( chars, 1 ) + "\n" +
  htmlentities ( chars, 2 ) + "\n" +
  htmlentities ( chars, 3 )
);
</script>

Ausgabe

&auml; &ouml; &uuml; &szlig; &lt; &gt; &amp; " '
&auml; &ouml; &uuml; &szlig; &lt; &gt; &amp; " &#039;
&auml; &ouml; &uuml; &szlig; &lt; &gt; &amp; &quot; '
&auml; &ouml; &uuml; &szlig; &lt; &gt; &amp; &quot; &#039;

 

Lizenzbestimmungen:

Das auf dieser Seite notierte Script htmlentities() ist Public Domain.

 

Zurück zur JavaScript Funktionsübersicht

 

© 2026 Murphy's World     Alle Rechte vorbehalten     Impressum