Ankündigung

Einklappen
Keine Ankündigung bisher.

Array-Wert in Zeile einer Datei schreiben mit fwrite

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Array-Wert in Zeile einer Datei schreiben mit fwrite

    Hallo,

    Ich möchte in eine Datei folgenden Inhalt speichern:

    PHP-Code:
     $custom_settings[0] = "<?\r\n";
     $custom_settings[1] = "const Base_Url = '".$base_url."';\r\n";
     $custom_settings[2] = "\$brand = '".$brand."';\r\n";
     $custom_settings[4] = "\$lang = '".$lang."';\r\n";
     $custom_settings[5] = "const DB1 = ['".$db1."'];\r\n";
     $custom_settings[6] = "const Version = '".$version."';\r\n";
     $custom_settings[7] = "?>";
     $custom_settings = implode('', $custom_settings);
    Ich verwende zum Schreiben folgende Klasse:

    PHP-Code:
    class fileHandling {
    public 
    $handle;
    public 
    $error;
    // create = 1: anlegen einer neuen Datei erlauben
    function __construct($file,$mode,$create) {
    $this->error false;
    $this->handle Server_Path.$file;
    if (
    is_writable($this->handle)) { 
    if (
    $create == AND !file_exists($this->handle) ) {throw new Exception('E010S'); $this->error true; } else {
     
    $this->handle fopen($this->handle$mode); }
    } else {throw new 
    Exception('E011S'); $this->error true; }

    }
    public function 
    write($data) {
    if (
    $this->error == false) { if (!fwrite($this->handle$data)) { throw new Exception('E012S'); $this->error true; }}

    }
    public function 
    close() {
    if (
    $this->error == false) { if (!fclose($this->handle)) { throw new Exception('E013S'); $this->error true; }}
    }
    public function 
    delete() {
    if (
    $this->error == false) { if (!unlink($this->handle)) { throw new Exception('E014S'); $this->error true; }}
    }

    Das Problem ergibt sich bei dem folgenden Array:

    PHP-Code:
    $db1 = ['host','user','pw','db']; 
    Ich habe es schon so probiert:

    PHP-Code:
    $custom_settings[5] = "const DB1 = ['".implode(','‚$db1)."'];\r\n"
    Jedoch wird hier nur der erste Wert genommen. Dann auf diesem Weg:

    PHP-Code:
    $host $db1[0];
    $custom_settings[5] = "const DB1 = ['".$host."'];\r\n"
    Hier wird gar kein Wert eingefügt. Über weitere Hinweise zur Lösung des Problems würtde ich mich sehr freuen.

    Gruss

    Markus

  • #2
    Du kannst Variablen direkt in die PHP-Notation exportieren: https://www.php.net/manual/de/function.var-export.php

    Aber warum baust du überhaupt PHP-Code zusammen? Und warum so komisch über mehrere Zeilen? Da scheint irgendwas bei dir schief zu laufen.
    [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

    Kommentar


    • #3
      Hallo,

      danke für Deine Antwort. Dass hieße ich müsste den beabsichtigten Zweck so einsetzen:

      PHP-Code:
      $db1 var_export($db1,true);

      $custom_settings[5] = "const DB1 = ['".(implode("','",$db1))."'];\r\n"
      Ich hatte schon einen ähnlichen Ansatz mit der Funktion "print_r", die aber nicht zum Erfolg geführt hatte.

      Ich kann im Moment leider nur auf eine Online-PHP-Sandbox zum testen zugreifen (ohne 'fwrite') und daher keine Rückmeldung geben, ob es so funktioniert.

      Gruss

      Markus

      Kommentar


      • #4
        Zitat von Jeff-Glenn-Fox Beitrag anzeigen
        Ich kann im Moment leider nur auf eine Online-PHP-Sandbox zum testen zugreifen
        Schaffe dir erst mal eine vernünftige Arbeitsumgebung, so kann man ja gar nicht arbeiten.

        Testen kannst du es auf einen der vielen Freehoster, wie bplaced.net wenn das nötig werden sollte.


        Kommentar


        • #5
          Hallo, danke für den Tip mit dem Freehoster, den kannte ich noch nicht. Super !

          Aber bringt mir im Moment leider auch nichts, da ich unterwegs bin und ich keinen FTP-Zugang habe oder einen Rechner mit installierten XAMPP zur Verfügung habe.

          Ich werde dann am WE mit vernünftiger Arbeitsumgebung testen. Macht so wirklich keinen Sinn. Ich war nur etwas ungeduldig, weil mir das Problem schon 2 Tage verfolgt.

          Gruss von Markus

          Kommentar


          • #6
            Das Problem wurde gelöst und der Beitrag kann geschlossen werden. Der Fehler lag bei einer fehlerhaften Kombination (Reihenfolge) aus Hochkommata und Anführungszeichen beim Schreiben der Datei.

            Gruss von Markus

            Kommentar

            Lädt...
            X