Das PHP $_GET['var'] und das Javascript-Equivalent / Javascript: replace() so wohl nicht

Silke Schümann wrote this 05:56:

Die Funktion, die ich bei struppi aka J. Strübig gefunden habe, zählt sicherlich zu den Dingen, die man sich in seine Library einverleiben sollte: javascript.jstruebig.de: $_GET für Javascript

Gesucht hatte ich nach der Syntax von Javascript replace und war über Signatur in einem selfHTML-Forumsbeitrag von struppi auf dessen Blog gestoßen.

Tja, das eine nicht gesucht und das andre … die Suche begann … das andere Thema (ungelöst! Und gelöst :D von Struppi. Danke. Siehe Kommentare)

Die Javascript-Funktion replace() und
das Mysterium mit dem global Austausch via Variablen

Die Syntax ist denkbar einfach: var x = y.replace(suchvar,ersatzvar);

Leider schweigt sich selfHTML bei dem Eintrag zu der Javascript-Funktion replace() über Variablen aus, geschweige denn, wie man den g-Parameter bei einer Variablen angibt. Vielleicht so? var = var.replace(var1+//g,var2); Nein! … auch nicht var = var.replace(var1 g,var2); wie zu erwarten var = var.replace(/var1/g,var2); funtioniert, doch nicht wie gewünscht. nun sucht Javascript nach der Variablenbezeichnung und ersetzt diese soweit vorhanden. :D

Schließlich fand ich in einem Beispiel für Reguläre Ausdrücke im Buch von Christian Heilmann die Lösung.

Wenn eine Variable übergeben möchte, dann gebe ich das bereits bei der Variablen mit:

  1. var a = 'ein alter Hase und alter Hut \n test: b und b';
  2. var b = /alter/g;
  3. var c = 'neuer';
  4. var d = a.replace(b,c);
  5. alert(a+d);

Schön, schön. Was aber, wenn die Variable von anderer Quelle kommt und nicht mit dem Delimitern und dem Parameter schon ausgestattet werden kann und wieder sind wir beim dem, was nicht funktioniert und immer noch doof wie Stroh: var e = '/'+b+'/g'; ist ein kalter und auch var e = / + b + /g; lässt den Anfänger im Regen stehen.

Keine gute Idee ist es in Javascript wohl, es mit dem folgenden Loop zu versuchen: for (i=0;a.search(b)!=-1;i++) {var d = a.replace(b,c);}. Zumindest der Firefox scheint damit unendlich beschäftigt zu sein und fragt mehrfach höflich an, ob das Script weiter ausgeführt werden solle oder ob man genug hätte. Ich hatte dann irgendwann genug. Angesichts des kurzen Test-Strings kann ich nur davon ausgehen, dass Search nicht den veränderten String verwendete sondern jeweils den Originalstring … Ich gebe vorläufig auf. Ich habe das Gefühl hier wurde in Javascript etwas vergessen zu implementieren und Tutorials hier einen wesentlichen Hinweis missen lassen.

Und all das, weil ich nicht via PHP, das Javascript in den Header schreiben wollte und damit folgende Variante einer Variablen in replace() nicht verwenden konnte:

  1. a.replace(/<?php echo $var ?>/g,<?php echo $var2 ?>);

3 Responses to “Das PHP $_GET['var'] und das Javascript-Equivalent / Javascript: replace() so wohl nicht”

  1. Struppi Says:

    Hallo.

    Das läßt sich lösen, indem man einen kleinen Umweg über das RegExp Objekt machen.

    z.b.
    function myReplace(txt, finde, ersetze) {
    var r = new RegExp( finde, 'gi');
    return txt.replace(r, ersetze);
    }
    var string = 'ein alter Hase und alter Hut \n test: b und b';
    alert(RegTest(string, 'hase', 'xxx'));

  2. Stefan B Says:

    Hallo Silke,
    eine ausführlichere Doku zum Replace (bzw. allgemein zu regulären Ausdrücken) findest du bei SelfHTML an anderer Stelle:
    http://de.selfhtml.org/javascript/objekte/regexp.htm

    Dort ist auch das Beispiel von Struppi näher beschrieben

  3. Silke Schümann Says:

    Auf der Seite war ich sogar, nur mit der falschen Fragestellung, habe ich nach kurzem Überflug, die Seite als irrelevant zur Seite geschoben. So kann’s gehen. :D Oh, boy …

    Notiz an mich: Fragen die zu keinem Ergebnis führen noch einmal offener Formulieren und Recherchen neu beginnen. *seufz*

Leave a Reply