Platzhalter durch PHP-Code ersetzen

Aragon83

Grünschnabel
Hallo Liebe Forumgemeinschaft,

Ich suche schon eine ganze Weile nach einer Lösung meines Problems welches ich euch nun nicht mehr vorenthalten möchte.

Ich versuche einen include durch einen Platzhalter auszuführen aber es möchte mir nicht gelingen, meine suche unter Google brachte immer nur eval() hervor aber jeder meinte auch das man die Finger weglassen soll da es unsicher ist.

Code:
$Abfrage = mysql_query("SELECT * FROM Tabelle") or die (mysql_error());
$Result = mysql_fetch_object($Abfrage);

echo $Result->Inhalt;

//Ausgabe
//<p>Hallo ich bin Text</p> [TAB]<p>Ich bin weiterer Text</p>

Nun Probiere ich [TAB] durch einen include zu ersetzten da der Inhalt der ja ersetzt werden soll ziemlich groß ist.

Ich hoffe mir kann jemand behilflich sein

Mif freundlichen Grüßen
Aragon83
 
Hallo Saftmeister,

ja das Script welches includet wird gibt echo teile aus, es sind nämlich zwei weilschleifen darin und das ist ja das Problem denn ich wollte es mit dem Platzhalter Tauschen.

Zum Sinn:
es soll eine TabNavigation includet werden.

Gibt es denn eine Möglichkeit den Inhalt zu splitten den include zu setzen und den String wieder zusammenzufügen und ihn dann auszugeben

Danke für deine Antwort MFG
 
Hab es nach vielen Probieren hinbekommen nun endlich :) natürlich möchte ich euch die Lösung nicht vorenthalten.

Code:
$ToQuery 		= "SELECT * FROM `Tabelle` WHERE (`Kategorie` LIKE BINARY '$Kategorie') AND (`ID` LIKE BINARY '1') OR (`ID` LIKE BINARY '$ID') AND (`Kategorie` LIKE BINARY '$Kategorie')";

$SwitchInhalt	= SqlMultie($Praefix,$ToQuery,1);
$ResultInhalt	= mysql_fetch_object($SwitchInhalt);
			
$Inhalt 		= "echo '";
$Inhalt 		.= $ResultInhalt->Inhallt;
			
$TabReplace 	= " '; ?><?php \$Replacer = include(\"Pfad zur Datei\"); ?><?php echo ' ";
			
$ArraySuche 	= array("[TAB]");
$ArrayErsetze 	= array("$TabReplace");
			
			
$Inhalt			.= "';";
			
			
//Ausgabe des Inhalltes
$OutPut = str_replace($ArraySuche,$ArrayErsetze,$Inhalt);
			
eval("$OutPut");

Danke aber MFG
 
eval is evil. Das liest du in diesem Forum überall und dabei bleibts.
Sieh dir mal folgendes an (was ebenfalls oft in diesem Forum genannt wird):
PHP:
// Ausgabepuffer an
ob_start();
// Skript ausführen
include('der_code.php');
// Ausgabe aus Puffer holen
$inhalt = ob_get_contents();
// Puffer schließen
ob_end_clean();

// Ersetzen
$deine_sachen = str_replace("[TAB]", $inhalt, $deine_sachen);

Das kostet weniger und saftmeister hat es dir schon einmal empfohlen.
 
Zuletzt bearbeitet:
Hallo und danke für deine Antwort,

Also ich dachte das eval() nur gefährlich ist wenn der php code der ausgeführt wird sich in der Datenbank befindet (Dieses tut er aber nicht)

zudem habe ich deinen Vorschlag natürlich ausprobiert und bin begeistert allerdings funktioniert er nicht mehr wenn mehrere verschiedene Platzhalter gesetzt sind hast du eine Idee wie ich das Filtern kann

MFG
Aragon83
 
Also wie oben in meiner Frage schon beschrieben hole ich den Inhalt aus einer Datenbank

Code:
//Ausgabe
<p>ich bin eine Menge Text</p> [TAB]<p>Ich bin weiterer Text</p>[Show]<p>Ich bin auch noch text</p> [Form]

So in etwa soll es Laufen, nun die Platzhalter kann ich ja via Array Übergeben aber wie finde ich Raus welcher Include zu welchem Platzhalter gehört

Danke schon mal
MFG
 
aber wie finde ich Raus welcher Include zu welchem Platzhalter gehört

Danke schon mal
MFG

Wie gut das es keine Frage ist, denn ich hätte sie nicht verstanden ;)

Die includes sind doch sauber getrennt:
PHP:
ob_start();
include('der_code.php');
$inhalt = ob_get_contents();
ob_end_clean();

ob_start();
include('anderer_code.php');
$show = ob_get_contents();
ob_end_clean();

// ... usw

Bist du dir sicher, dass du es über die Ausgabe der Skripte lösen willst?
Was spricht dagegen in den eingebundenen Dateien einfach eine Variable zu erzeugen?
(PHP arbeitet hier nicht nach der Algol-Sichtbarkeit)

foo.php:
PHP:
$welt = "World!";
$show = ... // Datenbankabfrage

index.php:
PHP:
include('foo.php');
echo "Hallo" . $welt;

Ausgabe:
Code:
Hallo World!
 
Zuletzt bearbeitet:
Danke für deine Antwort ich werde es gleich mal ausprobieren

ich versuche es mal zu erklären :)

Ich habe einen Inhalt in der Datenbank der aus Text und HTML Code besteht dieser Text enthält Platzhalter an verschiedenen Stellen ([TAB],[Show] usw...).

Diesen text speichere ich in der var $Inhalt und möchte nachträglich die Platzhalter mit zb. einer Navigation oder einen Formular austauschen.

wie ein Template-System
 
Zurück