wahsaga: RegEx Quantifizierungsmöglichkeit(?)

Beitrag lesen

hi,

Dummerweise versende ich an vielen verschiedenen Stellen im Script dann unterschiedliche Inhalte, wozu ich immer die Komponenten des Post entsprechend aufbaue (z.B.: post= "foo="+etwas.value+"&bar="+nochwas.innerHTML+usw.). Diesen String übergebe ich dann an eine Funktion die den Request ausführt.

Du hast also eine Dummheit erkannt und eingesehen - dann lasse dich bitte davor bewahren, gleich die nächste zu begehen :-)

Wenn ich wie vorgeschlagen korrigieren will, muss ich es an vielen Stellen im Script ausbessern. Das ist a) ein ziemlichen Aufwand und b) hab ich Angst, dabei entweder wieder einen Fehler zu machen oder nochwas übersehen zu haben und mir damit wieder viel Korrekturaufwand einzuhandeln.

Mit einer Bastellösung wie der angestrebten handelst du dir noch viel mehr Probleme ein.

Gut, bei &foo=blabla&bar&&blabla&bsp=foo kannst du alles zwischen den beiden Gleichheitszeichen suchen, das letzte &... ignorieren, und dazwischen alle & ersetzen.

Aber was machst du jetzt, wenn der _Inhalt_ von foo "blabla&bar=blubb&blabla" sein soll?
Dann haben wir
&foo=blabla&bar=blubb&blabla&bsp=foo

  • du suchst wieder den Inahlt zwischen zwei Gleichheitszeichen, findest also =blabla&bar=, berücksichtigst wieder das letzte &... nicht - und schon hast du einen neuen Parameter namens bar in deiner Übergabe, obwohl &bar=blubb gar keinen eigenen Parameter, sondern einen Teil des Inhalts von foo darstellen sollte.

Deshalb wäre mir eine zentrale Stelle, direkt vor dem Request lieber,

An diesem Punkt _kann_ es m.E. keine funktionierende Lösung mehr geben - weil du bei obigem Szenario nicht mehr sicher unterscheiden kannst, ob etwas als Parameterübergabe in der Form &parameter=wert gedacht war, oder ob dies Teil des Inhaltes eines anderen Parameters sein sollte.

Mit der simplen, zu simplen Stringverkettung im Schritt davor hast du dir die Daten bereits "versaut", ihre Bedeutung ist nicht mehr eindeutig bestimmbar.

gruß,
wahsaga

--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }