Hallo,
um eine Webseite mit php erstellen zu können, wird zunächst eine fertiges Template-Datei eingelesen:
Felder sin alle im Format __FELD__ vorhanden.
Im Folgenden sollen alle Felder durch entsprechene Inhalte ersetzt werden.
Bislang wurde hier der preg_replay-Befehl eingesetzt:
Falls allerdings innerhalb eines eingesetzten Inhalts wieder ein Feld-Kennzeichen (z.B. __MAIN__ ) vorhanden ist, wird dieses wieder ersetzt.
Gibt es eine Methode, um das ungewollte Ersetzen von eingesetzten Content-Inhalten zu vermeiden?
Beispiel-Szenario:
Felder:
$myCONTENT = "Im Bericht-A ist ein Kürzel "__FOOTER__" vorhanden, der im Buch A verwendet werden soll. ..."
$myHEADER = "Diskussion um Buch A, Ausgabe 2016"
$myFOOTER = 2017
In diesem Fall würde der Befehl preg_replace zwei __FOOTER__ finden und ersetzen.
Es sollen allerdings nur die Felder ersetzt werden, die zuvor in der $layouttemplate-Datei vorhanden sind.
-----
Ist dies lösbar?
Die naheliegendste Lösung wäre, den Feldinhalt CONTENT zum Schluss einzusetzen. Dadurch wäre das Problem allerdings nur auf später verschoben, in der doch wieder in einem der Felder zufällig ein Feldkennzeichen verwendet wurde, welches im Php-Script durch ein Inhalt ersetzt wird.
LG, Ben
um eine Webseite mit php erstellen zu können, wird zunächst eine fertiges Template-Datei eingelesen:
PHP-Code:
$page = file_get_contents($layouttemplate);
Im Folgenden sollen alle Felder durch entsprechene Inhalte ersetzt werden.
Bislang wurde hier der preg_replay-Befehl eingesetzt:
PHP-Code:
$page = preg_replace("/__TITLE__/i", "Demo Titel", $page);
Gibt es eine Methode, um das ungewollte Ersetzen von eingesetzten Content-Inhalten zu vermeiden?
Beispiel-Szenario:
Felder:
$myCONTENT = "Im Bericht-A ist ein Kürzel "__FOOTER__" vorhanden, der im Buch A verwendet werden soll. ..."
$myHEADER = "Diskussion um Buch A, Ausgabe 2016"
$myFOOTER = 2017
PHP-Code:
$page = file_get_contents($layouttemplate);
$page = preg_replace("/__CONTENT__/i", $myCONTENT, $page);
$page = preg_replace("/__HEADER__/i", $myHEADER, $page);
$page = preg_replace("/__FOOTER__/i", $myFOOTER, $page);
echo $page;
Es sollen allerdings nur die Felder ersetzt werden, die zuvor in der $layouttemplate-Datei vorhanden sind.
-----
Ist dies lösbar?
Die naheliegendste Lösung wäre, den Feldinhalt CONTENT zum Schluss einzusetzen. Dadurch wäre das Problem allerdings nur auf später verschoben, in der doch wieder in einem der Felder zufällig ein Feldkennzeichen verwendet wurde, welches im Php-Script durch ein Inhalt ersetzt wird.
LG, Ben
Kommentar