sascha321: file_get_contents und Parameter

Hallo

besteht bei file_get_contents die Möglichkeit noch einen Parameter mit zugeben?
z.B. das file_get_contents nicht die ganze Datei einliest sondern nur 1000 Zeichen?

  1. Moin Moin!

    besteht bei file_get_contents die Möglichkeit noch einen Parameter mit zugeben?

    Hast Du die Dokumentation gelesen?

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
    1. Ja habe ich, verstehe das aber nicht.

      Und jetzt?

      1. Mahlzeit sascha321,

        Ja habe ich,

        Dann wirst Du auch gelesen haben, welche Parameter möglich sind.

        verstehe das aber nicht.

        Was genau verstehst Du nicht?

        Und jetzt?

        Jetzt sollte ich langsam herausstellen, dass die Antwort auf Deine ursprüngliche Frage "Nein" lautet.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Hallo

          Danke für die Antwort.

          Gibt es so einen Befehl überhaubt wie ich ihn suche?

          1. Für alle die auch das selber problem haben sollten.

            substr(file_get_contents($var), 0, 1000)

            das liefert die ersten 1000 Zeichen.

            Ich hätte in meinem Fall die Datei erst abspeichern müssen und das wollte ich nicht. Es ist keine Datei die ich öffnen muss sondern ein String, der wohl so in der DB abgespeichert ist.
            Mehr kann ich dazu auch nicht sagen, weil ich nicht weiss wie das in der DB abgespeichert ist.

            1. Hello,

              Für alle die auch das selber problem haben sollten.

              substr(file_get_contents($var), 0, 1000)

              das liefert die ersten 1000 Zeichen.

              Das ist aber das ganze Gegenteil von ökonomisch. Es belastet den Speicher mit der kompletten Datei.
              Und außerdem wird hier das Ergebnis von file_get_contents() stäflich vernachlässigt. Derartige Funktionsschachtelungen sollte man sich als Programmierer ganz schnell abgewöhnen, auch wenn sie technisch elegant _aussehen_.

              Nach einem file_get_contents() solltest Du erst prüfen, ob false zurückgeliefert wurde, also
              mit "===false" prüfen.

              Faulheit rächt sich in der Programmierung immer!

              Liebe Grüße aus dem schönen Oberharz

              Tom vom Berg

              --
              Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
        2. echo $begrüßung;

          » Und jetzt?
          Jetzt sollte ich langsam herausstellen, dass die Antwort auf Deine ursprüngliche Frage "Nein" lautet.

          Ihr solltet lieber das englische Original zu file_get_contents() lesen. Seit PHP 5.1.0 gibt es sehr wohl die Möglichkeit, nur Stücke zu lesen.

          echo "$verabschiedung $name";

          1. Mahlzeit dedlfix,

            Ihr solltet lieber das englische Original zu file_get_contents() lesen.

            Oha, mal wieder reingefallen ... Notiz an mich selbst: Add-On für Firefox suchen, dass in Abhängigkeit von der angefragten URL/Domain die Browsersprache ändert.

            Seit PHP 5.1.0 gibt es sehr wohl die Möglichkeit, nur Stücke zu lesen.

            Klaffen die beiden Sprachversionen mal wieder so weit auseinander? :-(

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            1. Hallo,

              »» Ihr solltet lieber das englische Original zu file_get_contents() lesen.
              Oha, mal wieder reingefallen ... Notiz an mich selbst: Add-On für Firefox suchen, dass in Abhängigkeit von der angefragten URL/Domain die Browsersprache ändert.

              wieso in Abhängigkeit von der URL? Grundsätzlich!
              Ich freue mich über jedes Stückchen Information, das ich in Englisch anstatt in Deutsch bekomme.

              Ciao,
               Martin

              --
              Zwischen Leber und Milz
              passt immer noch'n Pils.
          2. Hello,

            Ihr solltet lieber das englische Original zu file_get_contents() lesen. Seit PHP 5.1.0 gibt es sehr wohl die Möglichkeit, nur Stücke zu lesen.

            ... und hast DU das für's Lesen im eigenen Dateisystem schon benutzt?

            Ich denke, ohne weitere Erklärungen dazu ist diese Funktion unbenutzbar.
            Die Motivation dafür ist wohl gewesen, etwas für HTTP 1.1 zu basteln, mit dem man auf chunked Rücksicht nehmen kann.

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. echo $begrüßung;

              » Ihr solltet lieber das englische Original zu file_get_contents() lesen. Seit PHP 5.1.0 gibt es sehr wohl die Möglichkeit, nur Stücke zu lesen.

              ... und hast DU das für's Lesen im eigenen Dateisystem schon benutzt?

              Gerade eben in einem kleinen Test. Ich hatte nichts zu beanstanden.

              <?php  
              echo file_get_contents(__FILE__, null, null, 2, 3);
              

              echo "$verabschiedung $name";

            2. Hallo vielen Dank,

              aber erst meckern mich alle aus und wissen es auch nicht besser cool.

              Eine frage aheb ich noch

              Wieso steht in den Parametern zweimal NULL NULL drin?

              <?php  
              // Read 14 characters starting from the 21st character  
              $section = file_get_contents('./people.txt', NULL, NULL, 20, 14);  
              var_dump($section);  
              ?> 
              

              das er 14 Zeichen ab dem 21 liesst das verstehe ich, nur die beiden NULL NULL kann ich nicht zuordnen

              1. echo $begrüßung;

                $section = file_get_contents('./people.txt', NULL, NULL, 20, 14);
                das er 14 Zeichen ab dem 21 liesst das verstehe ich, nur die beiden NULL NULL kann ich nicht zuordnen

                Wenn du auf (englischsprachigen) Handbuchseite die Parameterreihenfolge ansiehst, wirst du sehen, dass die Parameter 2 und 3 andere Aufgaben haben, die du nicht verwenden möchtest. Du kannst unter PHP nur dann Parameter weglassen, wenn sie als optional gekennzeichnet sind (einen Default-Wert haben) und du danach keinen Parameter mehr angeben möchtest. Zwischendurch etwas weglassen geht nicht. PHP kann nicht raten, welchen Parameter du auslassen willst. (Keyword-Parameter wie unter Python gibt es auch nicht.) Was kann man also machen, um Parameter der Form halber anzugeben, sie aber nicht wirken zu lassen? Leerstring oder 0 sind nicht das Wahre, denn sie können auch gewollt sein. Also nimmt man den Spezialwert null, was in dem Fall einem "nichts" entspricht.

                echo "$verabschiedung $name";

                1. wow vielen Dank für die promte und ausführliche Erklärung.

                  Das könnten sich hier mal einige auf die Fahnen schreiben.

                  1. Hi,

                    wow vielen Dank für die promte und ausführliche Erklärung.

                    Das könnten sich hier mal einige auf die Fahnen schreiben.

                    Na ja, oder du dir "mal mit Verstand Handbuch lesen (lernen)".

                    Zitat Manual:

                    context
                       A valid context resource created with stream_context_create().
                       If you don't need to use a custom context, you can skip this parameter by NULL.

                    MfG ChrisB

                    --
                    Light travels faster than sound - that's why most people appear bright until you hear them speak.
                    1. @chrisB

                      Ja ChrisB hast keine Ahnung von mir und wirfst mir vor das ich nicht lese! Du bist echt Klasse, dann frag ich mich wie ich die Funktion überhaubt gefunden habe??
                      Mein Englisch ist halt nicht besonders gut und die Übersetzungsprogramme liefern dann auch nur schrott, bei so speziellen Sachen.

                      So ich hoffe Du bist jetzt zufrieden.

                      Danek an alle die hier Geholfen haben.

                2. Hello dedlfix,

                  $section = file_get_contents('./people.txt', NULL, NULL, 20, 14);
                  das er 14 Zeichen ab dem 21 liesst das verstehe ich, nur die beiden NULL NULL kann ich nicht zuordnen

                  Wenn du auf (englischsprachigen) Handbuchseite die Parameterreihenfolge ansiehst, wirst du sehen, dass die Parameter 2 und 3 andere Aufgaben haben, die du nicht verwenden möchtest. Du kannst unter PHP nur dann Parameter weglassen, wenn sie als optional gekennzeichnet sind (einen Default-Wert haben) und du danach keinen Parameter mehr angeben möchtest. Zwischendurch etwas weglassen geht nicht. PHP kann nicht raten, welchen Parameter du auslassen willst. (Keyword-Parameter wie unter Python gibt es auch nicht.) Was kann man also machen, um Parameter der Form halber anzugeben, sie aber nicht wirken zu lassen? Leerstring oder 0 sind nicht das Wahre, denn sie können auch gewollt sein. Also nimmt man den Spezialwert null, was in dem Fall einem "nichts" entspricht.

                  Du solltest das einfache Beispiel mit einer solchen Erklätung im PHP-Handbuch in die UCN eintragen.
                  Diese Frage ist nämlich relativ häufig und die Erklärungen im Manual sind nicht unbedingt anfängerfreundlich.

                  Liebe Grüße aus dem schönen Oberharz

                  Tom vom Berg

                  --
                  Nur selber lernen macht schlau
                  http://bergpost.annerschbarrich.de
  2. Hello,

    besteht bei file_get_contents die Möglichkeit noch einen Parameter mit zugeben?
    z.B. das file_get_contents nicht die ganze Datei einliest sondern nur 1000 Zeichen?

    Ja, die haben daraus eine eierlegende Wollmilchsau gemacht, die aber keiner gebrauchen kann.

    Für Deine Zwecke erscheint es mir besser, Du benutzt eine selbstgeschriebene Funktion, die aus den Basisbausteinen der Dateisystemfunktionen zusammengebaut wird.

    Wenn man mitten in Dateien lesen will, deuet das meistens daraf hin, dass diese eine Struktur haben. Und es ist nicht selten der fall, dass derartige Zugriffe auch in nebenläufigen Prozessen stattfinden. Dann muss man für eine gegenseitige Sperre (Mutual Exclusion = MUTEX) sorgen. Dies alles leistet file_get_contents() nicht.

    Nimm also

    fopen()
      flock()
      filesize()
      fseek()
      fread()
      fclose()

    in der Reihenfolge und bau Dir eine Funktion daraus.

    Wenn Du Fragen dazu hast, dann poste gerne nochmal :-)

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de