max: Formular aus language Datei entwerfen und wieder abspeichern

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

  1. Sicher,
    zeilenweise einlesen, explode mit ', input text generieren.

    Nach speichern aus name/value die Zeilengenerieren und speichern

    Gruß Rainer

    1. 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

      1. 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

        1. 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.

          1. 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.

            1. 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.

  2. 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.