ERLEDIGT
JA
JA
ANTWORTEN
4
4
ZUGRIFFE
255
255
EMPFEHLEN
-
31.03.07 20:30 #1
- Registriert seit
- Sep 2005
- Beiträge
- 705
Ich glaube es merkt sofort jeder was ich versucht habe -.-PHP-Code:<?php
$Design = file_get_contents ('Layout.php');
$Design = str_replace("{SEARCH}", "<?php include('search.php'); ?>", $Design);
echo $Design;
?>
Wollte statt dem Platzhalter ein Script includen lassen, jedoch wird mir bloß die PHP-Zeile in den Quellcode geschrieben --> jedoch nicht ausgeführt!
Hoff ihr könnt mir sagen wie ich es anstellen müsste um mein Ziel zu erreichen.
-
file_get_contents() lädt einfach nur den Inhalt einer Datei - ohne ihn zu parsen. Dann schreibst du zwar einen PHP-Befehl hinein, dieser wird allerdings nur als String gewertet! Du kannst das (denke ich) folgendermaßen lösen:
Ansonsten könntest du natürlich auch die Datei Layout.php in zwei Hälften aufsplitten und dazwischen den include()-Befehl ausführen:PHP-Code:<?php
// Den Inhalt der ausgeführten search.php in eine Variable schreiben...
ob_start();
include_once "search.php";
$cnt = ob_get_clean();
// Datei laden und entsprechende Stelle ersetzen
$design = file_get_contents("Layout.php");
echo str_replace("{SEARCH}", $cnt, $design);
?>
Beides sicher nicht die elegantesten Lösungen, aber sie (sollten) funktionieren - auch ohne dass ich das jetzt ausprobiert habe...PHP-Code:<?php
$design = file_get_contents("Layout.php");
$spl = explode("{SEARCH}", $design);
echo $spl[0];
include "search.php";
echo $spl[1];
?>
Allerdings gibt es viel bessere Lösungen für Templates o.ä...Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut
-
01.04.07 00:24 #3
Oder auf eval() zurückgreifen, wenn es denn wirklich dieser Weg sein muss.
KIDS Kinderbetreuungsdienst
Xing
"When you play the game of thrones, you win or you die. There is no middle ground."
by Cersei Lannister in "A Game Of Thrones"
-
01.04.07 01:30 #4
- Registriert seit
- Sep 2005
- Beiträge
- 705
Ja
wobei ich das mit eval irgendwie mal richtig verstehen möchte -.-
Irgendwie schaff ich dass zwar, aber hab keinen plassen Schimmer davon ...
Hat geholfen -.- danke nochmal
-
Vorsicht: off-topic

Hallo!
Dann versuch ich mal die Funktion eval() zu erklären...
Also: Vereinfacht, bzw. zum besseren Verständnis kann man sagen, dass alles, was der eval-Funktion als Parameter übergeben wird, in den Rumpf einer Funktion geschrieben wird.
Aus folgendem:wird folgendes:PHP-Code:eval("echo \"Hallo!\";");
Dabei wird auch klar, dass man eval() z.B. nicht einfach den Quellcode einer PHP-Datei übergeben kann. Denn sonst würde die generierte Funktion (z.B.) so aussehen:PHP-Code:function execMyCode() {
echo "Hallo!";
}
Das ist syntaktisch natürlich absoluter Blödsinn!PHP-Code:function execMyCode() {
<html>
<?php
loadHead();
loadBody();
?>
</html>
}
Bleibt man bei der Annahme, dass PHP eine Funktion generiert, so wird auch deutlich, dass ein return innerhalb derer die Ausführung des an eval() übergebenen Codes unterbrochen wird:
Die Ausgabe wäre hier: FooPHP-Code:eval("echo \"Foo\"; return; echo \"Bar\"");
Vor der Ausgabe von "Bar" wird die Ausführung der "Funktion" ja abgebrochen.
So, bei return gibt es allerdings etwas zu beachten: Bei älteren Versionen von PHP (3 und abwärts) hat die eval()-Funktion keinen Rückgabewert. Das heißt jedes return innerhalb von eval(), würde die Ausführung zwar unterbrechen, jedoch nichts zurückgeben - auch wenn etwas spezifiziert wurde. Zum besseren Verständnis:
Ich habe gerade das Gerücht in die Welt gesetzt, dass der in eval()-stehende Code zu einer Funktion übersetzt wird. Das ist natürlich nicht richtig, sondern sollte nur dem Verständnis gelten! Es kann auch gar nicht so sein - denn was unterscheidet eine "von eval() generierte Funktion" von einer normalen Funktion? Innerhalb von eval() kann auf Variablen zugegriffen werden, auch wenn diese außerhalb deklariert werden! Auf in eval() deklarierte Variablen kann auch von außen nach der eval()-Ausführung zugegriffen werden!PHP-Code:$str = eval("return \"test\";");
var_dump($str); // in PHP3 und abwärts hätte $str den Wert NULL.
// in PHP4 und aufwärts hätte $str den Wert "test"
$str = eval("return;");
var_dump($str); // in allen PHP-Versionen hätte $str den Wert NULL.
Was ergibt z.B. folgendes?
Dies würde folgende Ausgabe erzeugen:PHP-Code:<?php
$str = "Das ist ein Test!<br/>";
// Die Backslashes sind notwendig, weil ansonsten der Inhalt der Variablen
// als solcher in den Quelltext einfließen würde... Optional kann man
// die Backslashes auch weglassen und stattdessen den gesamten
// Code innerhalb von eval() mit einfachen Anführungszeichen ' versehen.
$retVal = eval("echo \$str; \$str = \"Dies ist ein weiterer Test.\"; return \"Ein Wert.\"; \$str = \"Diese Stelle wird nicht erreicht!\";");
echo $str;
echo $retVal;
?>
Code :1 2 3
Das ist ein Test! Dies ist ein weiterer Test. Ein Wert.
In PHP3 und abwärts, gäbe es allerdings diese Ausgabe:
Ein NULL-Wert würde nicht ausgegeben werden!Code :1 2
Das ist ein Test! Dies ist ein weiterer Test.
Soviel dazu... ich hoffe, ich hab jetzt nicht für noch mehr Verwirrung gesorgt und konnte etwas Licht ins Dunkle bringen
Gruß
splitUm die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut
Ähnliche Themen
-
Wie geht denn sowas?
Von S-AGE im Forum PhotoshopAntworten: 5Letzter Beitrag: 21.02.08, 00:32 -
refcount.php?id=35 - Wie geht denn sowas?
Von Systemcrash im Forum PHPAntworten: 2Letzter Beitrag: 30.01.03, 20:57 -
Wieso geht das nicht ?...
Von Trash im Forum PHPAntworten: 2Letzter Beitrag: 09.05.02, 01:25 -
wie geht denn sowas?
Von NgiseD im Forum Flash PlattformAntworten: 4Letzter Beitrag: 03.05.02, 17:50 -
wieso geht das nicht :(
Von Leander im Forum PHPAntworten: 2Letzter Beitrag: 17.12.01, 19:55





Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren