Ankündigung

Einklappen
Keine Ankündigung bisher.

Text datei. Zeugs auslesen

Einklappen

Neue Werbung 2019

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

  • Text datei. Zeugs auslesen

    Hallo herstmal.

    Zuerst mal die Ausgangslage.
    eine Textdatei mit folgendem Inhalt:
    Code:
    ##################
    #### Text Datei ##
    ##################
    #
    # Komentar
    #
    Option a "On"
    
    #
    # Komentar
    #
    
    Option b "Off"
    so nun folgendes:
    Ich hab mit PHP realisiert das man halt jeweils die Optionen ändern kann (mit zugriff auf die Datei, Datei öffnen suchen, ersetzen usw. usw.)

    Jetzt aber zu meinem Problem, ich möchte das ganze jetzt ganz anderst gestallten und zwar so.
    Ein script soll zuerst die Datei öffnen, dann Alle Optionen (müssen nicht "Option" heissen) suchen und dann halt in die DB eintragen.

    Nur wie mache ich das?
    Das eintragen in die DB ist mir klar.

    Mir ist einfach nicht klar wie ich mache das er die Datei öffnet dann anfängt zu suchen, dann jede Option speichert und den momentanen Wert der Option speichert.

    Diese Aufgabe habe ich mir selbst geställt es ist kein Aufrtag eines Kunden oder so es nimmt mich einfach nur wunder.

    Ein Codeschnippsel wäre hier echt von Vorteil
    Wie man Fragen richtig stellt


  • #2
    Ich hab mit PHP realisiert das man halt jeweils die Optionen ändern kann (mit zugriff auf die Datei, Datei öffnen suchen, ersetzen usw. usw.)
    Wie sieht der Code dafür aus?

    Kommentar


    • #3
      zuerst wird die Linie gesucht:

      PHP-Code:
      <?php
      $datei 
      file('dateiname.asdad');

      foreach (
      $datei as $linie)
      if (
      substr($linie,0,strlen('Text3')) == 'Text3') {
      echo 
      $option;
      break;
      }
      ?>
      danach wird der variablen $option einen wert gegeben:
      PHP-Code:
      <?php
      $open 
      fopen("dateiname.asdad","r+w"); # datei öffnen, lese & schreibzugriff
      $read fread($openfilesize("datei.txt")); # inhalt auslesen
      $write str_replace($linie,$eingabe$read); # suchen & ersetzen
      fseek($open,0);
      fwrite($open,$write); # in die datei den neuen inhal schreiben
      fclose($open); #datei schließen 
      ?>
      benutze nicht ganz dieses script, das Original ist zuhause.

      ich weiss ich könnte dieses Script nehmen und einfach noch in die DB schreiben lassen, aber! ich gehe davon aus dass ich die Optionnamen nicht weiss, und daher nicht suchen kann..

      in der DB muss dann in etwa so eingetragen werdenam schluss siehts so aus)

      |Optionnamex|Optionvalue
      | |
      | |
      | |
      | |
      Wie man Fragen richtig stellt

      Kommentar


      • #4
        Der Aufbau ist fest
        - kein # am Anfang der Zeile
        - alles bis zum ersten Leerzeichen ist Name
        - alles nach dem ersten Leerzeichen bis zum Zeilenende gehört zum Wert
        oder
        - kein # am Anfang der Zeile
        - alles vor dem ersten Anführungzeichen (trimmed) gehört zum Namen
        - alles ab dem ersten Anführungszeichen bis zum nächsten Anführungszeichen gehört zum Wert. Der Rest der Zeile wird ignoriert
        ?

        Kommentar


        • #5
          - kein # am Anfang der Zeile
          - alles bis zum ersten Leerzeichen ist Name
          - alles nach dem ersten Leerzeichen bis zum Zeilenende gehört zum Wert

          Dies würde zutreffen..
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            Hast du schon mit regulären Ausdrücken gearbeitet.
            Das währe hier ganz angebracht.
            Diese suchen nur nach Mustern und können so den entspechenden Inhalt finden.

            google:http://www.google.de/search?hl=de&q=...C3%BCcke&meta=
            link:http://www.devmag.net/webprog/regulaere_ausdruecke.htm
            Befehle wie:

            - preg_match oder
            - preg_replace

            helfen auch weiter.

            Kommentar


            • #7
              PHP-Code:
              <?php
              $pattern 
              '/^\s*(?!#)(\S+)\s+(.+)$/';

              $contents file('options.txt');
              foreach(
              $contents as $line) {
                  if (
              preg_match($pattern$line$sp)) {
                      
              $name trim($sp[1]);
                      
              $value trim($sp[2]);
                      echo 
              $name' : '$value"
              \n"
              ;
                  }
              }
              ?>
              mit
              Code:
              ##################
              #### Text Datei ##
              ##################
              #
              # Komentar
              #
              OptionA "On"
              
              #
              # Komentar
              #
              
              OptionB "Off"
              getestet.

              Kommentar


              • #8
                hmm das funktioniert genau so wie ich es mir gedacht habe.
                Danke =D

                wusste gar nicht das man mit "," verknüpfen kann
                PHP-Code:
                <?php
                 
                echo $name' : '$value"
                \n"

                ?>
                hab das immer mit "." gemacht.
                Wie man Fragen richtig stellt

                Kommentar


                • #9
                  Hallo,

                  warum benutzt du keine Konfig-Files (INI)? Die könnten so aussehen:

                  config.ini
                  Code:
                  # SCHLAG MICH TOT
                  [Options]
                  a = On
                  b = Off
                  Code:
                  $ini = parse_ini_file("config.ini");
                  // $ini = array("Options" => array("a" => "On", "b" => "Off"));
                  Also warum eigene Config-Formate entwickeln, wenns dafür schon nen Standard gibt?

                  Kommentar


                  • #10
                    @Zergling hmm okey werde es mal testen, verstehe dein array konstruckt nicht ^o)

                    wie müsste ich den jetzt den echo gestallten damit im Browser (mit deinem Beispiel)

                    Code:
                    a = On
                    b= Off
                    angezeigt wird..

                    vergiss die Frage

                    var_dump von $ini gibt bei mir folgendes aus:
                    Code:
                    array(2) { ["a"]=>  string(0) "" ["b"]=>  string(0) "" }
                    das heisst der Array hat keinen Wert bekommen...
                    Wie man Fragen richtig stellt

                    Kommentar


                    • #11
                      Schau dir mal das Manual an, da stehts ganz gut erklärt (wie immer):
                      http://de2.php.net/parse_ini_file


                      // sample.ini
                      Code:
                      ; Dies ist ein Beispiel für eine Konfigurationsdatei
                      ; Kommentare beginnen wie in der php.ini mit ';'
                      
                      [erste_gruppe]
                      eins = 1
                      fünf = 5
                      animal = BIRD
                      
                      [zweite_gruppe]
                      pfad = /usr/local/bin
                      URL = "http://www.example.com/~username"
                      Code:
                      // php
                      // Mit Gruppen analysieren
                      $ini_array = parse_ini_file("sample.ini", TRUE);
                      print_r($ini_array);
                      Ausgabe per print_r wäre dann diese:
                      Code:
                      Array
                      (
                          [erste_gruppe] => Array
                              (
                                  [eins] => 1
                                  [fünf] => 5
                                  [animal] = Dodo bird
                              )
                      
                          [zweite_gruppe] => Array
                              (
                                  [pfad] => /usr/local/bin
                                  [URL] => http://www.example.com/~username
                              )
                      )
                      Probiers einfach mal aus, finds ziemlich genial, grade eben für Konfigurations-Dateien.

                      Ausgabe von "http://www.example.com/~username" dann also mit
                      Code:
                      print $ini_array["zweite_gruppe"]["URL"];

                      Kommentar


                      • #12
                        joa hatte ich auch nachgeschaut, aber warum geht es bei deinem Beispiel nicht? ^o).

                        ich mach ne ini file mit dem inhalt:
                        Code:
                        # SCHLAG MICH TOT
                        [options]
                        a = On
                        b = Off
                        die php Datei:
                        (Code taggs weil php irgendwie nicht funktionierten)
                        Code:
                        <?php
                        $ini_array = parse_ini_file("test.ini", TRUE);
                        print_r($ini_array);
                        ?>
                        ausgabe:
                        Code:
                        Array ( [options] => Array ( [a] => 1 [b] => ) )
                        verstehe nicht wo der Fehler ist ^o)
                        Wie man Fragen richtig stellt

                        Kommentar


                        • #13
                          on, yes und off, no werden schon als true bzw. false interpretiert. Ist doch super oder?

                          Kommentar


                          • #14
                            aaaaach sooo, ja dann ist ja klar!!

                            thx!
                            Wie man Fragen richtig stellt

                            Kommentar


                            • #15
                              Zitat von Bruchpilot
                              PHP-Code:
                              <?php
                              $pattern 
                              '/^\s*(?!#)(\S+)\s+(.+)$/';

                              $contents file('options.txt');
                              foreach(
                              $contents as $line) {
                                  if (
                              preg_match($pattern$line$sp)) {
                                      
                              $name trim($sp[1]);
                                      
                              $value trim($sp[2]);
                                      echo 
                              $name' : '$value"
                              \n"
                              ;
                                  }
                              }
                              ?>
                              mit
                              Code:
                              ##################
                              #### Text Datei ##
                              ##################
                              #
                              # Komentar
                              #
                              OptionA "On"
                              
                              #
                              # Komentar
                              #
                              
                              OptionB "Off"
                              getestet.
                              wie müsste es den aussehen wenn ich nach jeder Option einfach ein "=" reinschreiben möchte?

                              weil mein conffile ist jetzt so gegliedert, aber ich möchte gerne diese ini optionen verwenden und da von Hand immer ein "=" reinzuschreiben ist müsam bei grossen Dateien, ich hoffe ihr habt verstanden auf was ich hinaus möchte
                              Wie man Fragen richtig stellt

                              Kommentar

                              Lädt...
                              X