[gelöst][JS] Textstellen ersetzen

ChristianK

Well-known member
ID: 85965
L
25 Mai 2006
92
1
Hi,

ich versuche schon seit etwas längerer Zeit ein kleines Script zu coden, jedoch ohne Erfolg!

Es geht darum, das im Quelltext einer Seite zum Beispiel der Text "das ist ein #test# " vorkommt. Nun soll ein Script "test" auslesen mit Hilfe eines Regulären Ausdruckes habe ich mir gedacht.
Dieser soll dann ersetzt werden und zwar mit einem Array:
rep[test] = "Thema";

Nun soll auf der Seite folgendes zu lesen sein:
"das ist ein Thema"

Ja, ich weiß dass dies viel einfacher mit PHP geht, aber es sollte in Javascript sein ;)

Kann mir da einer helfen?

Code:
var search= /#(.*)#/;
var erg= search.exec(document.documentElement.innerHTML);

for (var i = 1; i < erg.length; i++) {
  alert(erg[i]);
}

Weiter komme ich einfach nicht.. Ich weiß jetzt nicht, wie ich ein Array mit dem gefundenen ansprechen kann, und dies im Quelltext ersetzen kann.

Weiterhin scheint der Reguläre Ausdruck nicht zu gehen bei meheren: "das #ist# ein #test#".

Nun wird "ist# ein #test" ausgegeben... Weiß einer weiter?

Christian
 
Zuletzt bearbeitet:
Teste mal:
PHP:
dies ist #zahl# #wert#

<script type="text/javascript">
var replacements = {
	zahl: 1,
	wert: 'Test #zahl#'
}

var loop = 0;

var content = document.getElementsByTagName('body')[0].innerHTML;
while (loop++<1000 && (result = /#(.*?)#/.exec(content))) {
	content = content.replace(result[0], replacements[result[1]]||'');
}
document.getElementsByTagName('body')[0].innerHTML = content;
</script>
 
Mal wieder vielen Dank ;)

Auch dies geht perfekt. Habe aber noch zusätzlich eine Frage, ist die Funktion zu empfehlen, um eine Seite zu machen?
Für die Seite zu benutzen wird Javascript vorrausgesetzt. Ich könnte es auch über PHP machen, jedoch frage ich mich: Was mache ich mit dem Text der über das SQL kommt?
Mit Javascript umgeht man diese ganzen Probleme. Also müsste dies ja eig. effizienter sein. Ist dies so zu empfehlen?

Und wofür ist dieser Ausdruck:

HTML:
replacements[result[1]]||''

?

Ist er dafür da, das er schaut ob ein entsprechender Datensatz da ist, wenn nicht, wird er mit "" ersetzt?
 
Zuletzt bearbeitet:
Ich weiss nicht, ob das effizienter ist. Mir persönlich graust es etwas vor einem Javascript-basierten Templatesystem, was aber nicht heisst, dass es schlecht ist.

Es gibt halt nur relativ viel Kontrolle an den Client und bläht die ganze Architektur etwas auf. Immerhin verlagert man doch relativ viel nach aussen.

Wobei es andererseits auch wieder Sinn macht, den View weiter zum Client hin auszulagern... :think:

Und zu dem von Dir zitierten Ausdruck:

Jo, das macht genau das, was Du meinst. Quasi so etwas wie ein Defaultwert für die Variable. Schicke Möglichkeit, das in Javascript kurz und prägnant auszudrücken, die ich momentan in PHP sehr vermisse. ;)
 
;)

Ja, ich denke mir, warum soll der Server alles machen? Der Client kann ja auch was schaffen. Heutzutage haben diese ja genug Leistung ;)
Nur es gibt halt immer ein Problem: Die Quelltexte sind öffentlich. Aber es gibt ja schon schöne Programme, die dem entgegenwirken.

Noch mals vielen Dank für deine gute und schnelle Hilfe ;)
 
Die Idee mit dem Clientseitigen Templatesystem finde ich interessant. Hast du das irgendwo im Betrieb, d.h. läuft das gut, oder ist das noch bei dir in der Entwicklung?

Und was den Quelltext angeht - ob da jemand Platzhalter sieht, oder direkt den Inhalt, so großen Unterschied sehe ich da nicht. Nur die echten Arbeiten wie Berechnungen oder so würde ich selber lieber privat im Hintergrund halten, d.h. von PHP bearbeiten lassen..