Variable in Liste nachträglich ändern im Betrieb der Seite
Kathi
- php
Beim Laden meiner Seite lade ich ganz am Anfang meine Sprachausgabe
Beispiel (Inhalt der Sprachausgabe:
$TEXT['titel'] = "Homepage";
$TEXT['untertitel'] = "Testen und Staunen";
$TEXT['gehtnicht'] =“das Ergebniss „.$ergebnis.“ ist falsch“;
Wenn dann eine Ausgabe erfolgt wird diese mir echo $TEXT['titel'] vollzogen. Soweit so gut, jetzt habe ich aber ein Problem und zwar wenn aktuelle Daten in die Staren Daten der Sprachdatei mit eingebunden werden sollen.
Ich gehe so vor…
Ich lade die Sprachausgabe
Dann vollziehe ich eine Rechnung, das Ergebnis steht in $ergebnis.
Nun möchte ich sie ausgaben mit $TEXT['gehtnicht'], was ja klar ist, weil wenn am Anfang die Sprachdatei geladen wird ist die Variable $ergebnis noch nicht gefüllt. Wie bekomme ich es also hin das die Sprachdatei Variable gefüllt ist?
Danke schon mal
Kathi
Wie bekomme ich es also hin das die Sprachdatei Variable gefüllt ist?
Du sprichst in Rätseln.
Sorry, ich versuche noch ein bischen Licht ins Dunkel zu bringen!
Bei Laden der index.php seite (jeder anderen Seite auch) wird am Anfang die
language.php includet in der die ganzen Variablen sind die ausgegeben werden, um dies handelt es sich.
Sorry, ich versuche noch ein bischen Licht ins Dunkel zu bringen!
Wie wärs, wenn du anstatt einer Taschenlampe einfach mal den Lichtschalter verwendest? ;)
language.php includet in der die ganzen Variablen sind die ausgegeben werden, um dies handelt es sich.
Das sagtest du bereits - ob nun der Dateiname für uns bekannt ist oder nicht spielt keine Rolle, das Problem ist dennoch unverständlich.
Hello,
Beim Laden meiner Seite lade ich ganz am Anfang meine Sprachausgabe
Beispiel (Inhalt der Sprachausgabe:$TEXT['titel'] = "Homepage";
$TEXT['untertitel'] = "Testen und Staunen";
$TEXT['gehtnicht'] =“das Ergebniss „.$ergebnis.“ ist falsch“;Wenn dann eine Ausgabe erfolgt wird diese mir echo $TEXT['titel'] vollzogen. Soweit so gut, jetzt habe ich aber ein Problem und zwar wenn aktuelle Daten in die Staren Daten der Sprachdatei mit eingebunden werden sollen.
Ich gehe so vor…
Ich lade die Sprachausgabe
Dann vollziehe ich eine Rechnung, das Ergebnis steht in $ergebnis.
Nun möchte ich sie ausgaben mit $TEXT['gehtnicht'], was ja klar ist, weil wenn am Anfang die Sprachdatei geladen wird ist die Variable $ergebnis noch nicht gefüllt. Wie bekomme ich es also hin das die Sprachdatei Variable gefüllt ist?
Das was Du suchst, nennt sich "Templatetechnik", hier allerdings etwas komplexer, weil das Template selber noch nicht zusammengebaut ist, sondern seine Komponenten noch im Array $TEXT verpackt sind.
Es kommt dann später also auf die Reihenfolge der Ersetzungen an.
$TEXT['titel'] = "##OWNER##Homepage";
$TEXT['untertitel'] = "Testen und Staunen";
$TEXT['gehtnicht'] = "das Ergebnis##ERGEBNIS## ist falsch";
$ergebnis = '7*3'; ## dynamische Ersetzung berechnen
$_replace['##OWNER'] = 'Kathi's '; # statische Ersetzung
$_replace['##ERGEBNIS##'] = " $ergebnis"; # dynamische Ersetzung, muss vorher bekannt sein
foreach($TEXT as $key => $val)
{
$TEXT[$key] = str_replace($array_keys($_replace), array_values($_replace), $val);
}
echo_template($TEXT); ## und in dieser Funktion ird dann das Array $TEXT ausgegeben
Was passiert?
Das gesamte Array $TEXT wird linear iteriert und jedes Element von str_replace() nach allen Ersetzungsplatzhaltern durchsucht. Diese werden dann durch die Ersetzungen ausgetauscht.
Schau dir die Beschreibungen zu den Funktionen an.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
... und den ersten Fehler in meinem Vorschlag habe ich schon gefunden ;-))
Das was Du suchst, nennt sich "Templatetechnik", hier allerdings etwas komplexer, weil das Template selber noch nicht zusammengebaut ist, sondern seine Komponenten noch im Array $TEXT verpackt sind.
Es kommt dann später also auf die Reihenfolge der Ersetzungen an.
$TEXT['titel'] = "##OWNER##Homepage";
$TEXT['untertitel'] = "Testen und Staunen";
$TEXT['gehtnicht'] = "das Ergebnis##ERGEBNIS## ist falsch";$ergebnis = '7*3'; ## dynamische Ersetzung berechnen
$_replace['##OWNER##'] = 'Kathi's '; # statische Ersetzung
$_replace['##ERGEBNIS##'] = " $ergebnis"; # dynamische Ersetzung, muss vorher bekannt sein
foreach($TEXT as $key => $val)
{
$TEXT[$key] = str_replace($array_keys($_replace), array_values($_replace), $val);
}echo_template($TEXT); ## und in dieser Funktion ird dann das Array $TEXT ausgegeben
Darin muss dann auch die Vorbereitung für den Kontext vorgenommen werden
Was passiert?
Das gesamte Array $TEXT wird linear iteriert und jedes Element von str_replace() nach allen Ersetzungsplatzhaltern durchsucht. Diese werden dann durch die Ersetzungen ausgetauscht.Schau dir die Beschreibungen zu den Funktionen an.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
... und den ersten Fehler in meinem Vorschlag habe ich schon gefunden ;-))
wie wär's mit dem konzeptionellen Ansatz, printf() zu verwenden?
Hello,
... und den ersten Fehler in meinem Vorschlag habe ich schon gefunden ;-))
wie wär's mit dem konzeptionellen Ansatz, printf() zu verwenden?
Ich habe nichts dagegen. Aber wer den Vorschlag macht, sollte auch das Beispiel dazu liefern :-)
str_replace() hat den Vorteil, dass es quasirekursiv arbeitet, wenn man die Ersetzungsreihenfolge beachtet.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg