Formular aus language Datei entwerfen und wieder abspeichern
max
- php
Ich habe einen Idee, doch ich weiß nicht so recht ob sie machbar ist:
Ich habe mehrere language files.
de.php.
en.php
etc.
diese sind immer so aufgebaut:
<?php
$_lang['faq'] = 'FAQ';
$_lang['impressum'] = 'Impressum';
$_lang['kontakt'] = 'Kontakt';
$_lang['agb'] = 'AGB';
?>
Die Dateien sind unterschiedlich Groß, also die eine hat mehr die andere weniger Variablen.
Ich würde gerne ein Script entwerfen, das die Variablen einliest und als Formular ausgibt:
So etwa:
Ausgabe Eingabe (inputfeld)
--------------------------------------------------------------------
faq FAQ
impressum Impressum
kontakt Kontakt
agb AGB
Button, Abspeichern....
und wenn man auf abspeichern klickt sollen alle Input-felder wieder in die besagte language.php geschrieben werden.
Hat jemand eine Idee wie ich da am besten vorgehen kann. Oder ob das eine verrückte Idee ist.
max
Sicher,
zeilenweise einlesen, explode mit ', input text generieren.
Nach speichern aus name/value die Zeilengenerieren und speichern
Gruß Rainer
Danke,
ich werd mich mal dran versuchen
Max
Sicher,
zeilenweise einlesen, explode mit ', input text generieren.Nach speichern aus name/value die Zeilengenerieren und speichern
Gruß Rainer
ALso ich habe nun die Datei mittels file_get_contents eingelesen
und dann die Start und End bezeichnung <?php und ?> entfernt.
Dann alle Leerzeilen.
und dann die Datei Zeilenweis ein ein array geschrieben.
<?php
$homepage = file_get_contents('de.php');
// löscht PHP Startzeile
$homepage = str_replace('<?php','',$homepage );
//löscht PHP Endzeile
$homepage = str_replace('?>','',$homepage );
// löscht alle Leerzeilen
$homepage = preg_replace("/[\r\n]+[\s\t]*[\r\n]+/","\n", $homepage);
// Schreibt in Zeilen
$zeilen = explode('\n',$homepage );
// Ergebniss
echo "<pre>"; var_dump($zeilen); echo "</pre>";
?>
Jetzt habe ich zwei Probleme bei denen ich nicht weiterkomme?
Ich denke aber das sie ähnlich gelagert sind.
Wie bekomme ich folgende Informations Zeile raus:
// User Userinformationen//
oder
// Adressendaten //
und mein weiteres Problem
in jeder zeile habe ich ja zwei Daten:
$_lang['faq'] = 'FAQ';
Wie schaffe ich es, wenn ich zeilenweise vorgehen, das ich
$_lang['faq'] = 'FAQ';
zwischen $_lang['
----------------
faq
----------------
']
und
= '
----------------
FAQ
----------------
';
auslese.
Max
Tach!
ALso ich habe nun die Datei mittels file_get_contents eingelesen und dann die Start und End bezeichnung <?php und ?> entfernt.
Das ist alles viel zu aufwendig. PHP kann die Arbeit machen, das hat bereits einen Parser eingebaut, da musst du keinen neuen schreiben.
Erstell dir eine Funktion. Innerhalb der Funktion gilt ein eigener Scope und es werden keine außerhalb vorhandenen Variablen überschrieben. Ein Parameter der Funktion ist die jeweilige Sprache. In der Funktion inkludierst du die zur Sprache passende Datei. Jetzt hast du ein fix und fertiges Array im Scope der Funktion rumliegen. Das musst du nur noch zurückgeben. Außerhalb kannst du das dann in einer Variablen ablegen. Die Funktion nochmal für die zweite Sprache aufrufen und das Ergebnis in einer zweiten Variable ablegen. Fertig.
Und fürs Schreiben gibt es var_export().
P.S. Die Funktion muss nicht unbedingt sein. Es reicht auch, das Array einer Sprache in den globalen Raum zu laden und es dann in eine andere Variable zu kopieren, bevor das zweite inkludiert wird.
dedlfix.
O, Gott,
danke für deine Infos. Ich werde mir deinen Text wohl noch 10000 mal durchlesen.
Vieleicht kapier ich ihn dann, bis jetzt leider nichts davon.
Ich gebe aber nicht auf....
Max
Tach!
ALso ich habe nun die Datei mittels file_get_contents eingelesen und dann die Start und End bezeichnung <?php und ?> entfernt.
Das ist alles viel zu aufwendig. PHP kann die Arbeit machen, das hat bereits einen Parser eingebaut, da musst du keinen neuen schreiben.
Erstell dir eine Funktion. Innerhalb der Funktion gilt ein eigener Scope und es werden keine außerhalb vorhandenen Variablen überschrieben. Ein Parameter der Funktion ist die jeweilige Sprache. In der Funktion inkludierst du die zur Sprache passende Datei. Jetzt hast du ein fix und fertiges Array im Scope der Funktion rumliegen. Das musst du nur noch zurückgeben. Außerhalb kannst du das dann in einer Variablen ablegen. Die Funktion nochmal für die zweite Sprache aufrufen und das Ergebnis in einer zweiten Variable ablegen. Fertig.
Und fürs Schreiben gibt es var_export().
P.S. Die Funktion muss nicht unbedingt sein. Es reicht auch, das Array einer Sprache in den globalen Raum zu laden und es dann in eine andere Variable zu kopieren, bevor das zweite inkludiert wird.
dedlfix.
Tach!
Ich werde mir deinen Text wohl noch 10000 mal durchlesen. Vieleicht kapier ich ihn dann, bis jetzt leider nichts davon.
Das ist mir zu pauschal. Wenn du wirklich nichts verstehst, solltest du dich fragen, ob du überhaupt schon die Grundlagen PHPs kennst, oder mir bitte sagen, was konkret unverständlich war.
Erstell dir eine Funktion.
Grundlagenwissen.
function foo() { ... }
Innerhalb der Funktion gilt ein eigener Scope und es werden keine außerhalb vorhandenen Variablen überschrieben.
Zusatzinformation. Eigentlich auch Grundlagenwissen, dass PHP-Funktionen in Bezug auf Variablen ein eigener Mikrokosmos sind.
Ein Parameter der Funktion ist die jeweilige Sprache.
Funktionen können Parameter entgegennehmen. Selbst wenn du noch nie eine Funktion geschrieben hast, wirst du doch sicher schon welche angewendet haben und dabei Parameter übergeben haben.
function foo($parameter) { ... }
In der Funktion inkludierst du die zur Sprache passende Datei.
Inkludieren wirst du können, nehm ich an. Zur Sprache passend heißt, dass aus dem übergebenen Parameter der Funktion der Dateiname zur Sprachdatei gebildet wird. pfad/de.php oder pfad/en.php
$dateiname = 'pfad/' . $sprache . '.php';
include $dateiname;
Jetzt hast du ein fix und fertiges Array im Scope der Funktion rumliegen.
Kontrollausgabe mit print_r($_lang); (oder auch var_dump()).
Das musst du nur noch zurückgeben.
Funktionen können etwas zurückgeben. Auch Grundlagenwissen.
return $_lang;
Außerhalb kannst du das dann in einer Variablen ablegen.
Ebenfalls Grundlagenwissen, das Funktionsergebnis einer Variablen zuzuweisen.
$bar = foo();
Für deinen Fall muss der Funktion noch dir Sprache übergeben werden.
Die Funktion nochmal für die zweite Sprache aufrufen und das Ergebnis in einer zweiten Variable ablegen. Fertig.
Wiederholung des Funktionsaufrufs.
Und fürs Schreiben gibt es var_export().
Tipp für den nächsten Schritt. Der spart dir große Teile des händischen Erstellens des Sprachdatei-Codes.
P.S. Die Funktion muss nicht unbedingt sein. Es reicht auch, das Array einer Sprache in den globalen Raum zu laden und es dann in eine andere Variable zu kopieren, bevor das zweite inkludiert wird.
Vereinfachung des Ganzen, ist aber mit Vorsicht zu genießen, weil beim Inkludieren im globalen Scope die globalen Variablen überschrieben werden.
include 'pfad/de.php';
$lang_de = $_lang;
include 'pfad/en.php';
$lang_en = $_lang;
Kontrollausgaben zeigen dir wieder, ob alles geklappt hat.
dedlfix.
Tach!
Die Dateien sind unterschiedlich Groß, also die eine hat mehr die andere weniger Variablen.
Ich würde gerne ein Script entwerfen, das die Variablen einliest und als Formular ausgibt:
Dann lauf durch das eine Sprachen-Array und schau nach, ob es ein Pendant im anderen gibt. Wenn nicht, dann nur die eine Sprache ausgeben, wenn ja, dann beide ausgeben und den Eintrag aus dem anderen Array löschen. Übrig bleibt dann ein Rest-Array mit den Einträgen der anderen Sprache, die in der ersten nicht vorkommen.
und wenn man auf abspeichern klickt sollen alle Input-felder wieder in die besagte language.php geschrieben werden.
Hat jemand eine Idee wie ich da am besten vorgehen kann.
Eindeutige Namen für die Inputfelder vergeben, so dass du sie am Ende den entsprechenden Array-Felder zuordnen kannst, natürlich getrennt nach den Sprachen.
dedlfix.