Problem mit Template System

proloser

Erfahrenes Mitglied
Hallo,

ich möchte in die HTML Datei folgenden Javascript Code einfügen:

Code:
<input id="field" type="text" onkeyup="document.getElementById('field2').value = document.getElementById('field').value"><input id="field2" type="text">

Sobald ich es über mein TemplateSystem versuche, geht nix mehr. Ich verwende "addslashes()", somit sieht der Code dann so aus und funktioniert natürlich nicht mehr:


Code:
<input id="field" type="text" onkeyup="document.getElementById(\'field2\').value = document.getElementById(\'field\').value"><input id="field2" type="text">


Das Template System möchte ich nicht ändern, gibts da nicht eine andere Lösung?

MfG proloser
 
Ich würde sagen, ohne eine Änderung des Templatesystems ist das nicht zu bewerkstelligen, wenn es nicht einen block gibt, wie Code oder so, indem nichts maskiert wird...
 
TemplateSystem kann man ja nicht unbedingt sagen und eine änderung wäre schon möglich wenn ich die ganzen HTML Dateien nicht ändern muss.

Ich habe einfach eine kleine funktion erstellt:

PHP:
function get_template($filename) {
  $file = implode("",file("templates/".$filename));
  $file = addslashes($file);
  return $file;
}

Um das Problem zu beheben, fällt mir nicht wirklich ein nach was ich suchen soll.
 
[phpf]addslashes[/phpf]

Überleg doch mal scharf, was diese Funktion macht und was bei dir in der Ausgabe zuviel ist.
 
Ja wenn ich addslashes weg lasse, funktioniert das mit den Templates nicht mehr und wenn ich die Zeichen im Javascript weglasse funktioniert das Script nicht mehr. Was soll ich da noch überlegen?
 
addslashes() fügt sowohl for Single- als auch vor Double-Quotes einen Backslash ein, um diese Zeichen zu maskieren. Daher auch die 2. Ausgabe in deinem ersten Post.

Um es einfacher zu gestalten kannst du die Single-Quotes wieder entmaskieren. Da hilft dir entweder ein regulärer Ausdruck oder strreplace() oder etwas in der Art.

Viel einfacher ist es natürlich addcslashes() zu verwenden und nur die Double-Quotes zu maskieren.
 
Genau das hab ich gesucht, vielen Dank!

So hab ichs jetzt gelöst:
PHP:
$file = addcslashes($file,"\\\"");

Gruß proloser
 
Zurück