You are not logged in.

  • Login

1

Tuesday, April 14th 2009, 1:13pm

Ersetzen eines Platzhalters

Hallo,

ich möchte ganz einfach einen Platzhalter {platzhalter} ersetzen durch einen von der Datenbank ausgelesenen Wert "beispiel".
Leider komme ich nicht wirklich weiter, egal wie viel ich google und Foren durchsuche.

Folgenden Code habe ich schon zusammengefriemelt:

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
$TagStart = "{";
$TagEnd = "}";
$TemplateFilePath = include("templates/main.tpl");
if($TemplateFilePath)
{
include("inc/db.connect.php");
$readdb = mysql_query("SELECT * FROM allgemeine_einstellungen");
while($row = mysql_fetch_assoc($readdb))
{
$replace = preg_replace($TagStart.$row['platzhalter'].$TagEnd, $row['inhalt'], $TemplateFilePath);
echo "$replace";
}
}


Habe aber etwas anderes hier im Forum entdeckt, kann mir jemand erklären was /{\w+}/siU ist ?
Also habe gelesen dass man sowas für Platzhalter verwendet zum auslesen und überschrieben aber wie?

PHP Quellcode

1
preg_match_all("/{\w+}/siU", $file, $regex);


Würde mich über schnelle Hilfe freuen.

This post has been edited 1 times, last edit by "CocaColaZero" (Apr 14th 2009, 5:40pm)


2

Tuesday, April 14th 2009, 5:46pm

Kann denn keiner helfen?

3

Tuesday, April 14th 2009, 7:13pm

Quoted

Kann denn keiner helfen?

Manche Leute müssen Arbeiten :-)

Quoted

Habe aber etwas anderes hier im Forum entdeckt, kann mir jemand erklären was /{\w+}/siU ist ?


Das sind Reguläre Ausdrücke (RegEx)
Für dein Vorhaben sollte ein "str_replace" aber eigentlich vollkommen reichen. Du hast ja Wert X der durch Wert Y ersetzt werden soll. Also brauchst du keine Regulären Ausdrücke.

4

Tuesday, April 14th 2009, 9:01pm

okok ist ja gut:)

ja habe auch str_replace schon ausprobiert, funktioniert leider nicht.
Was könnte im Code NICHT stimmen?
den funktionieren tut es ja nicht.

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
$TagStart = "{";
$TagEnd = "}";
$TemplateFilePath = include("templates/main.tpl");
if($TemplateFilePath)
{
include("inc/db.connect.php");
$readdb = mysql_query("SELECT * FROM allgemeine_einstellungen");
while($row = mysql_fetch_assoc($readdb))
{
$replace = str_replace($TagStart.$row['platzhalter'].$TagEnd, $row['inhalt'], $TemplateFilePath);
echo $replace;
}
}

5

Tuesday, April 14th 2009, 9:15pm

Was könnte im Code NICHT stimmen?

include ist keine Funktion und weder ein Boolean noch einen String zurück.
Kleiner Tipp: str_replace arbeitet auch mit Arrays.

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
include "inc/db.connect.php";
 
$tagStart = "{";
$tagEnd = "}";
$template = file_get_contents("templates/main.tpl");
$replace = array();
 
$readdb = mysql_query("SELECT platzhalter,inhalt FROM allgemeine_einstellungen");
while($row = mysql_fetch_assoc($readdb)) {
	$key = $tagStart.$row['platzhalter'].$tagEnd;
	$replace[$key] = $row['inhalt'];
}
 
echo str_replace(array_keys($replace), array_values($replace), $template);

6

Tuesday, April 14th 2009, 9:17pm

könnte ich dafür get_content_files benutzten?
so heißt die funktion glaube ich.
Wie man das ganze mit Arrays realisiert weiss ich, das Problem ist, dass ich das ganze statt in einem Array, in einer Datenbank speichern möchte, also die Werte die die Platzhalter ersetzen.

7

Tuesday, April 14th 2009, 9:48pm

Quoted

könnte ich dafür get_content_files benutzten?


d0nut hat dir doch schon eine Lösung gezeigt:

PHP Quellcode

1
$template = file_get_contents("templates/main.tpl");

(Außerdem hast du es wohl nur verdreht get_content_files gibt es nicht)

Quoted

Wie man das ganze mit Arrays realisiert weiss ich, das Problem ist, dass ich das ganze statt in einem Array, in einer Datenbank speichern möchte, also die Werte die die Platzhalter ersetzen.

Wo ist das Problem? Nur weil es ein Array ist, heißt es doch nicht, dass du das ganze nicht mehr in eine Datenbank schreiben kannst.

8

Tuesday, April 14th 2009, 10:17pm

Öhm, find ich witzi, lol sorry habe den code voll überlesen..
Danke für die Hilfe euch beiden!

Similar threads

Social bookmarks