Datei einlesen und Variablen ersetzen
Knud
- php
0 Harry0 Knud
0 Christian Kruse
Hallo,
ich möchte per file() eine Datei einlesen, in der sich html-code aber auch php-variablen befinden.
Als Test hab ich folgende Datei erstellt:
test.tpl
--------
<hr>$test<hr>
und meine php-Datei sieht so aus:
test.php
--------
<html><body>
<?
$filename = "test.tpl";
$test = "Hello World";
$data = @implode('', (@file($filename)));
echo $data
?>
</body>
</html>
Eigentlich sollte das $test durch ein 'hello world' ersetzt werden.
Macht er aber nicht. Wenn ich $data nicht aus file() fülle sondern "händisch", dann wird $test ersetzt.
Wie kann ich denn php dazu anleiten, es doch zu tun?
Gruß,
Knud
Hoi !
$filename = "test.tpl";
$test = "Hello World";
$data = @implode('', (@file($filename)));
echo $data
Warum nicht ganz einfach
$test = "Hello World";
$filename = "test.tpl";
include($filename);
Das gibt genau den Effekt, den Du haben willst.
Da sparst Du Dir viel Mühe ...
Ciao,
Harry
Hallo!
Warum nicht ganz einfach
$test = "Hello World";
$filename = "test.tpl";
include($filename);
Wäre echt supereinfach, wenns funktionieren würde.
Leider ersetzt er mir die $test immer noch nicht.
Ich versteh das nicht. Als ich die Datei in eine Variable eingelesen hatte, war ich davon ausgegangen, dass sich der Wert der eingelesenen Variable exakt genauso verhalten würde, wie ein gesetzter Wert.
Dachte dass,
$data = file($datei);
in der einfach <hr>$test<hr> steht, das selbe wäre wie
$data = "<hr>$test<hr>";
Jetzt hab ich das mit include gemacht und dachte, dass wäre so, als ob der eingelesene text gar nicht extern liegen würde.
Aber er machts wieder nicht.
Wenn ich eval($data); probiere, dann erhalte ich eine Fehlermeldung direkt in der ersten Zeile, keine Ahnung was der bedeuten könnte.
Aber auf eval würd ich auch lieber verzichten.
Gruß,
Knud
Hallo,
Wäre echt supereinfach, wenns funktionieren würde.
Leider ersetzt er mir die $test immer noch nicht.
Wie waere es, wenn du PHP auch zeigst, dass das PHP-Code ist?
<h1><?php echo $test; ?></h1>
Ich versteh das nicht. Als ich die Datei in eine Variable
eingelesen hatte, war ich davon ausgegangen, dass sich der Wert
der eingelesenen Variable exakt genauso verhalten würde, wie ein
gesetzter Wert.
Natuerlich nicht.
Dachte dass,
$data = file($datei);
in der einfach <hr>$test<hr> steht, das selbe wäre wie
$data = "<hr>$test<hr>";
Nein, natuerlich nicht. Ein String ist ein String und Code ist Code.
Jetzt hab ich das mit include gemacht und dachte, dass wäre so,
als ob der eingelesene text gar nicht extern liegen würde.
Richtig.
Aber er machts wieder nicht.
Siehe oben.
Gruesse,
CK
Hoi,
ich möchte per file() eine Datei einlesen, in der sich html-code
aber auch php-variablen befinden.
Nun, fuer dein 'Problem' gibt es mehrere Ansaetze. Der erste waere,
Templates zu benutzen. Fuer PHP gibt es sehr umfangreiche und gute
Template-Bibliotheken (Smarty, FastTemplate, PHPLib, ...). Infos
dazu kannst du dir sehr leicht 'ergoogeln'.
Der zweite Ansatz waere 'include'. Was du da oben moechtest, schreit
geradezu nach Include. Infos zu finden unter
http://php.net/include.
Der dritte und IMHO unsauberste Ansatz waere 'eval'. Du liest den
String wie gewohnt ein und fuehrst ihn ueber eval($data) aus. Das
sollte theoretisch gehen.
Der Grund, warum dein obiger Ansatz nicht funktioniert, ist der, dass
du einen String aus einer Datei einliest. Dass darin Variablen sind,
die ersetzt werden sollen, weiss PHP natuerlich nicht -- woher auch?
Gruesse,
CK