你好 Dieter,
Ich benutze folgende Funktion, um html-Entities zu erzeugen.
[…]
Wenn du diese Funktion anders aufbauen würdest (nämlich mit einem
assoziativen Array und ohne Regexe), dann wäre sie um ein vielfaches
schneller. So muss die Regex-Engine für jedes definierte Entity durch den
String jagen und es ersetzen. Dadurch wird natürlich ein neuer String
erstellt. Das bedeutet viel CPU-Zeit und viel Speicher… Versuchs doch mal
so:
[code lang=javascript]
String.prototype.htmlEntities = function() {
var chars = new Array();
chars['&'] = 'amp';
chars['à'] = 'agrave';
// [… du weisst schon, wie es weitergeht …]
var newstr = '';
for(var i=0;i<this.length;++i) {
if(chars[this.substr(i,1)]) newstr += chars[this.substr(i,1)];
else newstr += this.substr(i,1);
}
return newstr;
}
So muss nur ein einziges mal der String durchlaufen werden – egal, wieviele
Ersetzungen vorgenommen werden müssen.
Du muesstest eine aehnliche Funktion bauen, aber ntuerlich umgekehrt.
Das reicht leider nicht, da dann hier die nummerischen Zeichenreferenzen
nicht umgesetzt werden würden. Da muss man schon mit einem richtigen[tm]
Parser für Entities dran.
再见,
克里斯蒂安
Bruce Lee, der Meister | Neues Design im Thema
89,7% aller Statistiken sind frei erfunden!
http://wwwtech.de/