Mika: Arrays

Hi Zusammen,

ich habe eine Textdatei in der mehrere IP-Adressen stehen.
Diese möchte ich mit PHP einlesen und in einem Array abspeichern.

Ich habe schon das Befehlsverzeichnis von selfphp.de (Arrays) durchgelesen aber ich komm einfach nicht drauf.

$fp = fopen("ip_addresses.txt", "r");

while(($ch = fgets($fp, 15)) != false){
  $array = array ($ch);
}

Gruß

Mika

  1. Hallo Mika,

    ich habe eine Textdatei in der mehrere IP-Adressen stehen.
    Diese möchte ich mit PHP einlesen und in einem Array abspeichern.

    wenn die IP-Adressen schön Zeile für Zeile stehen und sonst nichts in Deiner Datei steht, dann reicht Dir schon

      
    $ip_arr = [link:http://www.php.net/manual/de/function.file.php@title=file]("ip_adresses.txt");  
    
    

    Näheres zu file() findest Du im verlinkten Handbuchabschnitt.

    Freundliche Grüße

    Vinzenz

    1. Hallo Mika,

      $array = array ($ch);

      In jedem Schleifendurchlauf überschreibst du $array wieder mit dem neu gelesenen Inhalt. Willst du das wirklich? :) Definiere $array außerhalb der Schleife und füge die gelesene IP immer an.

      Wirf auch einen Blick auf die Dateisystem-Funktionen, insbesondere file().

      Grüße
        David

      --
      >>Nobody will ever need more than 640k RAM!<<
      1981 Bill Gates
    2. Hi Vinzenz,

      cool, vielen Dank für die Info.

      Ich hätte nicht gedacht das es dafür schon eine fertige Funktion gibt:-)

      Jetzt muss ich nur noch rausfinden wie ich die "Trim-Funktion" mit einbau um die Zeilenumbrüche wegzukriegen

      Gruß

      Mika

      1. Hello,

        Ich hätte nicht gedacht das es dafür schon eine fertige Funktion gibt:-)

        Die ist auch nicht fertig, sondern äußerst rudimentär.

        Jetzt muss ich nur noch rausfinden wie ich die "Trim-Funktion" mit einbau um die Zeilenumbrüche wegzukriegen

        Dann überleg am besten auch gleich, wie du die Funktion multiuserfähig machst.

        Es ist besser, Dur arbeitest folgendermaßen

        • Datei öffen                          fopen()
        • Datei exclusiv sperren               flock()
        • Datei vollständig einlesen           filesize() und fread()
        • Datei schließen und damit
            automatisch entsperren
        • Eingelesenen Datenblock in Array     explode()
            umwandeln

        http://www.php.net/manual/en/function.explode.php

        Die Funktion file() ist nicht für den konkurrierenden Betrieb geeignet und sollte nur für Tests im isolierten Umfeld benutzt werden. Das trifft übrigens i.d.R. auf alle namensbasierten File-Funktionen zu. Nur die handle-basierten liefern eine relative Sicherheit.

        Harzliche Grüße vom Berg
        http://bergpost.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

        1. Hi Tom,

          Jetzt muss ich nur noch rausfinden wie ich die "Trim-Funktion" mit einbau um die Zeilenumbrüche wegzukriegen

          Dann überleg am besten auch gleich, wie du die Funktion multiuserfähig machst.

          Warum sollte Mika das tun? Es geht doch hier um das Einlesen einer Datei.

          • Datei öffen                          fopen()
          • Datei exclusiv sperren               flock()

          Nochmal: es geht um das Einlesen der Datei. Wofür also ein exklusiver Lock?

          Die Funktion file() ist nicht für den konkurrierenden Betrieb geeignet und sollte nur für Tests im isolierten Umfeld benutzt werden. Das trifft übrigens i.d.R. auf alle namensbasierten File-Funktionen zu. Nur die handle-basierten liefern eine relative Sicherheit.

          also, ich weiß ja nicht, wie du darauf kommst. file_put_contents() bietet z.B. explizit an, durch Mitgabe eines Flags im dritten Parameter, einen exklusiven Lock zu setzen.

          Gruß,
          Andreas.

          1. Hello,

            Jetzt muss ich nur noch rausfinden wie ich die "Trim-Funktion" mit einbau um die Zeilenumbrüche wegzukriegen

            Dann überleg am besten auch gleich, wie du die Funktion multiuserfähig machst.

            Warum sollte Mika das tun? Es geht doch hier um das Einlesen einer Datei.

            Ja, und darf das Einlesen durch andere Prizesse gestört werden, oder ist sicherzustellen, dass auch genau die Daten der Datei eines bestimmten Zeitpunktes abgebildet werden sollen?
            Dürfen während des Leseprozesses durch andere Prozesse Änderungen an den Daten stattfinden, also vorne hat man dann die Daten von Zeitpunkt X und hinten die von Zeitpunkt X+dx ...?

            • Datei öffen                          fopen()
            • Datei exclusiv sperren               flock()

            Nochmal: es geht um das Einlesen der Datei. Wofür also ein exklusiver Lock?

            siehe oben

            Harzliche Grüße vom Berg
            http://bergpost.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

            1. Hi Tom,

              Dürfen während des Leseprozesses durch andere Prozesse Änderungen an den Daten stattfinden, also vorne hat man dann die Daten von Zeitpunkt X und hinten die von Zeitpunkt X+dx ...?

              ähm, dass das nicht passiert ist aber IMHO doch eher die Aufgabe des Dateisystems.

              Nochmal: es geht um das Einlesen der Datei. Wofür also ein exklusiver Lock?

              siehe oben

              ein exklusiver Lock verhindert, dass ein anderer Prozess lesend auf die Ressource zugreift. Wozu sollte das hier nötig sein?

              Gruß,
              Andreas.

              1. Hello,

                Dürfen während des Leseprozesses durch andere Prozesse Änderungen an den Daten stattfinden, also vorne hat man dann die Daten von Zeitpunkt X und hinten die von Zeitpunkt X+dx ...?

                ähm, dass das nicht passiert ist aber IMHO doch eher die Aufgabe des Dateisystems.

                Nein!

                Harzliche Grüße vom Berg
                http://bergpost.annerschbarrich.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
                Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                1. Hi,

                  Nein!

                  das wird mir zu blöd.

                  *plonk*

                  Gruß,
                  Andreas.

                  1. Hello,

                    Nein!

                    das wird mir zu blöd.

                    *plonk*

                    Du bist unverschämt.
                    Wenn Du im Archiv mal nach dem Thema "Locking" gesucht hättest, könntest Du vernünftige Fragen zu dem Thema stellen. Genauso wahrscheinlich, wenn Du im PHP-Manual, in Google oder in Wikipedia nahgeschaut hättest.

                    http://suche.de.selfhtml.org/cgi-bin/such.pl?suchausdruck=File+Locking&lang=on&feld=alle&index_2=on&index_3=on&index_4=on&index_5=on&index_6=on&index_7=on&index_8=on&index_9=on&index_10=on&index_11=on&index_12=on&index_13=on&hits=500
                    http://www.google.de/search?hl=de&q=File+Locking&btnG=Suche&meta=lr%3Dlang_de
                    http://de.wikipedia.org/wiki/Locking

                    Wenn Dich das Thema wirklich interessiren würde, hättest Du nachgefragt und nicht nur gegengehalten.

                    Harzliche Grüße vom Berg
                    http://bergpost.annerschbarrich.de

                    Tom

                    --
                    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                    Nur selber lernen macht schlau
                    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

                    1. Hi,

                      nur damit du nicht meinst, du seist im Recht:

                      Wenn Dich das Thema wirklich interessiren würde, hättest Du nachgefragt und nicht nur gegengehalten.

                      ich habe nachgefragt, sogar zwei Mal:

                      ein exklusiver Lock verhindert, dass ein anderer Prozess lesend auf die Ressource zugreift. Wozu sollte das hier nötig sein?

                      Nochmal: es geht um das Einlesen der Datei. Wofür also ein exklusiver Lock?

                      Du hast nicht darauf geantwortet.

                      Gruß,
                      Andreas.