Nicht korrekt geschlossener Ausdruck in HTML-Parser
Enrico
- javascript
Guten Abend,
sorry, dass ich euch wieder bemühen muss.
Es geht um einen recht guten HTML-Parser, den ich hier gefunden habe, und der soweit sehr gut funktioniert.
Nun wollte ich den JavaScript-Code komprimieren, um ihn kleiner zu machen, hier macht mir aber folgende Funktion einen Strich durch die Rechnung:
rest.replace(attr, function(match, name)
{
var value = arguments[2] ? arguments[2] : arguments[3] ? arguments[3] : arguments[4] ? arguments[4] : fillAttrs[name] ? name : "";
attrs.push({name: name, value: value, escaped: value.replace(/(^|[^\\])"/g, '$1\\\"')
|
-----------------------------------------------------------------------+ [1]
}) <--- [2]
}); <-- [3]
Im Editor PSPad wird mir die Zeichenfolge ab einschließlich dem mit [1] markierten Anführungszeichen bis zum Schluss in roter Schrift angezeigt, was mir signalisiert, dass diese Zeichenkette nicht korrekt abgeschlossen ist.
Will ich nun aber alles zusammenführen, dann sind auch die mit [2] und [3] schließenden Klammern rot.
Wie muss ich den Ausdruck unter value.replace escapen, damit er korrekt geschlossen wird, ohne aber die Funktionalität außer Kraft zu setzen?
Vielen Dank und Gruß, Enrico
Hallo,
… HTML-Parser …
… JavaScript-Code …
Gruß Jürgen
Tach!
attrs.push({name: name, value: value, escaped: value.replace(/(^|[^\\])"/g, '$1\\\"') | -----------------------------------------------------------------------+ [1] }) <--- [2] }); <-- [3]
Im Editor PSPad wird mir die Zeichenfolge ab einschließlich dem mit [1] markierten Anführungszeichen bis zum Schluss in roter Schrift angezeigt, was mir signalisiert, dass diese Zeichenkette nicht korrekt abgeschlossen ist.
Mir signalisiert das, dass der PSPad einen fehlerhaften Parser enthält. Vermutlich macht er Mustererkennung und rechnet nicht mit einzelnen Anführungszeichen in regulären Ausdrücken.
Will ich nun aber alles zusammenführen, dann sind auch die mit [2] und [3] schließenden Klammern rot.
Folgefehler aufgrund der fehlerhafen Erkennung des Anführungszeichens.
Wie muss ich den Ausdruck unter value.replace escapen, damit er korrekt geschlossen wird, ohne aber die Funktionalität außer Kraft zu setzen?
Er ist soweit korrekt und es gibt da auch keine Maskierungsvorschrift. Im Ersetzen-mit-Ausdruck ist lediglich ein überflüssiges \ vor dem " drin. Es stört nicht, ist da aber nicht notwendig. Vielleicht kannst du den Fehler im Parser umgehen, indem du die Unicode-Escape-Sequenz des Anführungzeichens nimmst: \u0022
dedlfix.
Hallo dedlfix,
Mir signalisiert das, dass der PSPad einen fehlerhaften Parser enthält.
Ärgerlich, wenn ein Editor Fehler enthält. Aber gut, wenn das Script dennoch reibungslos funktioniert, dann hake ich das einfach als optischen Fehler ab.
Er ist soweit korrekt und es gibt da auch keine Maskierungsvorschrift. Im Ersetzen-mit-Ausdruck ist lediglich ein überflüssiges \ vor dem " drin. Es stört nicht, ist da aber nicht notwendig. Vielleicht kannst du den Fehler im Parser umgehen, indem du die Unicode-Escape-Sequenz des Anführungzeichens nimmst: \u0022
Werde ich ausprobieren.
Danke Dir!
Gruß, Enrico