Datei zeilenweise auslesen

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

  • Datei zeilenweise auslesen

    Hi,

    ich möchte gerne eine Datei, die so aussieht:

    NG_FORM_NAME=Name
    NG_FORM_NAME2=Ihr Name
    NG_FORM_EMAIL=E-Mail
    NG_FORM_EMAIL2=Ihre E-Mailadresse
    NG_FORM_PASS=Passwort
    NG_FORM_PHONE=Telefon
    NG_FORM_PHONE2=Telefonnummer
    NG_FORM_TOWN=Ort

    So auslesen, das ich am ENde ein Array habe, in dem im Key die NG_* Variable steht und im Value der Text zwischen dem = Zeichen und nächsten NG_*

    geht sowas?

    Wenn ja, wie?

    Ich hab so recht noch keine Idee...

    Danke im voraus für all die Tipps, die da kommen mögen :-)

  • #2
    keine Ahnung ob das umständlich ist, aber zumindest ist es mit explode() machbar sowas zu realisieren. Ich bin im Umgang mit Dateien nicht so sehr firm drin, aber ich würds wahrscheinlich mit explode machen, auch wenn es wie gesagt sehr wahrscheinlich nicht die eleganteste Lösung ist.

    Kommentar


    • #3
      Ist doch kein Problem, z.B. so:
      PHP-Code:
      $zeilen file($datei);
      foreach (
      $zeilen as $zeile){
          list(
      $key$val) = explode('='$zeile);
          
      $array[$key] = chop($val);
      }
      Var_dump($array); 
      Gruss
      H2O

      Kommentar


      • #4
        Meine Version:

        (danke für die Idee mit dem explode)

        PHP-Code:
        <?php
        $handle 
        fopen ("1/global.lng""r");
        while (!
        feof($handle)) {
            
        $buffer fgets($handle4096);
            
        $a[] = explode("=",$buffer);
        }

        foreach(
        $a as $key => $value){
            if(!empty(
        $value[0])){
                
        $b[$value[0]] = trim(ereg_replace("\n|\r|\r\n","",$value[1]));
            }
        }
        echo 
        "<pre>";echo print_r($b);echo "</pre>";
        fclose ($handle); 
        ?>
        Klar gehts uach kürzer

        Kommentar


        • #5
          PHP-Code:
          trim(ereg_replace("\n|\r|\r\n" 
          ist imho doppelt gemoppelt weil trim() bereits Leerzeichen und Zeilenumbrüche am Stringende und Anfang entfernt
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            Original geschrieben von heohni
            Klar gehts uach kürzer
            Hab ich dir ja schon geschrieben. Und wenn die Datei dem entspricht, was du vorgegeben hast, genügt der chop() (= rtrim(), ich komme halt von Perl) vollkommen.
            Ist also alles drin, was du mit fopen(), fclose(), mehreren Schleifen, etc erreichst
            Gruss
            H2O

            Kommentar


            • #7
              für sowas gibts eigentlich auch parse_ini_file()

              (@jahlives ausserdem nimmt man da besser str_replace())

              Kommentar


              • #8
                Original geschrieben von jmc
                für sowas gibts eigentlich auch parse_ini_file()
                parse_ini_file() kann bei dieser Struktur nicht verwendet werden:
                Original geschrieben von parse_ini_file

                Hinweis: Enthält ein Wert in der ini Datei nicht alphanumerische Zeichen, so muss dieser von doppelten Anführungszeichen (") eingeschlossen sein.
                Original geschrieben von jmc
                @jahlives ausserdem nimmt man da besser str_replace()
                Warum soll man statt einer völlig überflüssigen Funktion eine andere verwenden?
                Gruss
                H2O

                Kommentar


                • #9
                  Men Problem ist jedoch - wenn ich mein Script verwende - und ich hab zwischen den EInträgen mehrere Leerzeile, wie z.B.

                  NG_FORM_NAME=Name
                  NG_FORM_NAME2=Ihr Name
                  NG_FORM_EMAIL=E-Mail
                  NG_FORM_EMAIL2=Ihre E-Mailadresse

                  NG_FORM_PASS=Passwort
                  NG_FORM_PHONE=Telefon
                  NG_FORM_PHONE2=Telefonnummer
                  NG_FORM_TOWN=Ort

                  Bekomme ich trotz allem einen leeren Array Eintrag...

                  Kommentar


                  • #10
                    Dann frag das halt ab, z.B.:
                    PHP-Code:
                    $zeilen file($datei);
                    foreach (
                    $zeilen as $zeile){
                        
                    chop($zeile);
                        if (empty(
                    $zeile)){
                            continue;
                        }
                        list(
                    $key$val) = explode('='$zeile);
                        
                    $array[$key] = $val;

                    Gruss
                    H2O

                    Kommentar


                    • #11
                      parse_ini_file() kann bei dieser Struktur nicht verwendet werden
                      Funktioniert sogar wunderbar! Probier's doch mal aus.
                      PHP-Code:
                      var_dump(parse_ini_file('inifile')); 
                      Ergibt wie erwartet:
                      Code:
                      array(8) {
                        ["NG_FORM_NAME"]=>
                        string(4) "Name"
                        ["NG_FORM_NAME2"]=>
                        string(8) "Ihr Name"
                        ["NG_FORM_EMAIL"]=>
                        string(6) "E-Mail"
                        ["NG_FORM_EMAIL2"]=>
                        string(18) "Ihre E-Mailadresse"
                        ["NG_FORM_PASS"]=>
                        string(8) "Passwort"
                        ["NG_FORM_PHONE"]=>
                        string(7) "Telefon"
                        ["NG_FORM_PHONE2"]=>
                        string(13) "Telefonnummer"
                        ["NG_FORM_TOWN"]=>
                        string(3) "Ort"
                      }

                      Kommentar


                      • #12
                        Du hast natürlich recht, wenn man das Handbuch anschaut, sollte man vielleicht etwas genauer hinscheuen, ein Wort wie «nicht» ist dummerweise schnell überlesen. Und ich zitiere auch noch, was ich ungenau gelesen habe.
                        Gruss
                        H2O

                        Kommentar


                        • #13
                          Ok, ich dachte, du meinst die Zeichen " " und "-" mit nicht alphanumerischen Zeichen. Dann wäre dein Einwand natürlich korrekt, die Doku aber halt fehlerhaft ^^

                          Kommentar

                          Lädt...
                          X