Riesigen String parsen

DataFox

Erfahrenes Mitglied
Hi Leute,

ich habe einen großen String mit etwa 500 Wörtern, wobei auch Sonderzeichen wie < und > oder / vorkommen. Es handelt sich dabei um ein XML-ähnliches Format, es ist aber kein XML. Einige Wörter sind in < und > eingeschlossen.

Für genau diese Wörter habe ich ein assoziatives Array, welches diese Wörter gegen andere austauscht.

Was getan werden soll:
- den String nach in < und > eingeschlossenen Wörtern abgrasen
- den Inhalt zwischen < und > in eine Variable match_value schreiben
- den Inhalt zwischen < und > durch die Variable replace_value ersetzen

Ich vermute mal, das ich hier mit indexOf nicht weit komme? Gibts in JavaScript auch sowas wie "preg_match_all" so wie in PHP? Ideal wäre ja, wenn JavaScript hier einfach alles ersetzt, was dazu passt. So eine Art "Suchen- und Ersetzen-Funktion" für Strings...

Besten Dank!

Gruß
Laura
 
Welchen Grund gibt es, die Umwandlung per JavaScript und nicht per z.B. Ajax+PHP machen? Außer sich als Programmierer zu quälen?
 
Alles was man client-seitig machen kann spart Traffic und Rechenleistung am Server und wenn man eh schon Javascript vorraussetzten muss...
 
das ist auch eine Alternative :)

Ich habe es nun mit Replace gelöst...

Code:
replace(new RegExp(search_str,"g"), replace_str)

Besten Dank für Eure Hilfe! Es klappt soweit einwandfrei! (muss nur noch die Schleife drumherum)...

Was noch ganz toll wäre: Wenn man nicht zwangsweise jedes element des Arrays abrackern muss und jedes mal prüft ob irgendwo in dem Text was matcht, sondern anders rum ran geht: Man sucht die in < und > eingeschlossenen Schlüsselwörter und schaut dann im Array, ob es ein Element dazu gibt, und wenn ja, wird ersetzt. Ist sowas per JavaScript möglich?

Denn das Array hat nicht gerade wenige Elemente, aber in einem Text kommt nur ein Bruchteil davon vor, falls überhaupt...

Gruß
Laura
 
@PhoenixXP:Was spricht dafür, den Server mit einer Sache zu belasten, die der Client auch alleine schafft...ausser der Faulheit des Programmierers?:eek:

@Laura: benutze ein try/catch-Statement, vom Sinn her so:
Code:
try{String=String.replace(Treffer,Array['Ersatz']);}
catch(e){}
 
Das mit dem Traffic ist ja richtig und Entlastung ist ja richtig. Würde mich mal interessieren, wie der lange String erzeugt wird. Wenn er per Eingabe entsteht, ist eine clientseite Bearbeitung natürlich einfacher. Wenn der String eh per Ajax/PHP o.ä. abgeholt wird, halte ich die Verarbeitung/Umwandlung per PHP für besser, da PHPs preg_*-Funktionen flexibler sind.
 
Das mit dem Traffic ist ja richtig und Entlastung ist ja richtig. Würde mich mal interessieren, wie der lange String erzeugt wird. Wenn er per Eingabe entsteht, ist eine clientseite Bearbeitung natürlich einfacher. Wenn der String eh per Ajax/PHP o.ä. abgeholt wird, halte ich die Verarbeitung/Umwandlung per PHP für besser, da PHPs preg_*-Funktionen flexibler sind.

Ich halte es ehrlich gesagt für besser das den Clienten machen zu lassen , oki es kommt immer auf die Anzahl der Besucher an gehen wir mal davon aus das da 200 Leute zur selben Zeit online sind. 200 Leute schicken innerhalb von 20 sec die Eingaben raus. Und der Server darf nun alles verarbeiten.

Da ist es doch besser die 200 Leute verarbeiten es auf ihren Rechner einfach besonders bei riesigen Texten und der Server kümmert sich nur noch darum das es gespeichert wird.

Wobei hier die Frage ist ob da jemand Schindluder treiben kann und dann Dinge an den Server sendet die nicht gern gesehen sind in dem Fall wäre es besser die Eingaben über PHP zu überprüfen.
Über die URL kann man mit JavaScript auch schöne Sachen machen , ist halt in dem Fall eine Frage der Sicherheit und da trau ich JavaScript nicht wirklich.
 

Neue Beiträge

Zurück