Rainer: Dateien zeilenweise auslesen - Anzahl der Zeilen ermitteln

Hallo,

ich habe mir folgendes geschrieben:

<?php
 $ZA = 0;
 $files = "zeilen.csv";
 $files_array = file($files);
  for($x=0;$x<count($files_array);$x++){
   $datei = "$files_array[$x]";
   $array = file($datei);
   $ZX = count($array);
   $ZA = ($ZA + $ZX);
  }
 echo"Anzahl: $ZA";
?>

die csv:
index.php
cms/backend-cms.css
cms/backend.css
cms/backend.php
cms/footer.php

Steht in der .csv nur eine Zeile funktionert es. Stehen wie beschrieben mehrere Dateien inc. Pfade in der .csv geht es nicht mehr. Gebe ich mit echo <br />$datei aus steht alles korrekt da. Die Dateien existieren auch - aber die Ausgabe ist:

Warning: file(index.php ) [function.file]: failed to open stream: Invalid argument in G:\xampplite\home\servercms_de\zeilen.php on line 7

Warning: file(cms/backend-cms.css ) [function.file]: failed to open stream: Invalid argument in G:\xampplite\home\servercms_de\zeilen.php on line 7

Warning: file(cms/backend.css ) [function.file]: failed to open stream: Invalid argument in G:\xampplite\home\servercms_de\zeilen.php on line 7

Warning: file(cms/backend.php ) [function.file]: failed to open stream: Invalid argument in G:\xampplite\home\servercms_de\zeilen.php on line 7
Anzahl: 17

Stehe jetzt aber wirklich auf dem Schlauch. Was geht denn da nicht?

Gruß Rainer

  1. Hallo :)

    $files_array = file($files);

    $array = file($datei);

    Stehe jetzt aber wirklich auf dem Schlauch. Was geht denn da nicht?

    Ich bin selbst noch sehr unsicher, aber ich meine, dass dort keine Variable stehen darf.

    So verwende ich das:

    $files_array = file("files.txt");

    mfg
    cygnus

    --
    Die Sache mit der Angel und dem  ><o(((°>  hat immer einen Haken ...
    1. Guten Tag,

      Ich bin selbst noch sehr unsicher, aber ich meine, dass dort keine Variable
      stehen darf.

      Das ist PHP egal. Da kann ein Stringliteral, eine Konstante, ein Funktionsaufruf, eine Variable (und noch ein paar mehr) stehen.

      Gruß
      Christoph Jeschke

      --
      Zend Certified Engineer
      Certified Urchin Admin
      1. Hallo :)

        Ich bin selbst noch sehr unsicher, aber ich meine, dass dort keine Variable
        stehen darf.

        Das ist PHP egal. Da kann ein Stringliteral, eine Konstante, ein Funktionsaufruf, eine Variable (und noch ein paar mehr) stehen.

        Danke für den Hinweis!

        mfg
        cygnus

        --
        Die Sache mit der Angel und dem  ><o(((°>  hat immer einen Haken ...
  2. Hi,

    Warning: file(index.php ) [function.file]: failed to open stream: Invalid argument in G:\xampplite\home\servercms_de\zeilen.php on line 7

    Wenn PHP sich ueber ein invalid argument beschwert - dann sollte doch wohl das allererste, was du machst, sein, dass du den Inhalt des Arguments, das du der Funktion uebergibst, mit einer Kontrollausgabe kontrollierst.

    var_dump bietet sich dazu an.
    Mach das also, und lasse uns an deiner Ueberraschung ueber den Inhalt der Variablen teilhaben.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
    1. P.S.:

      var_dump bietet sich dazu an.

      Bitte <pre> </pre> um diese Ausgabe herum setzen, oder direkt aus dem Quellcode kopieren.

      MfG ChrisB

      --
      „This is the author's opinion, not necessarily that of Starbucks.“
  3. Guten Tag,

    Warning: file(cms/backend.php ) [function.file]: failed to open stream: Invalid argument in G:\xampplite\home\servercms_de\zeilen.php on line 7
    Anzahl: 17

    Da ist ein Leerzeichen hinter den Dateinamen. Du kannst bei file() den   FILE_IGNORE_NEW_LINES- und FILE_SKIP_EMPTY_LINES-Parameter verwenden (das ist, zugegeben, in der deutschen Übersetzung des Manuals nicht enthalten, aber da solltest du eh nicht schauen).

    Ansonsten würde ich nicht jeden File einlesen nur um zu schauen, wie viele Zeilen enthalten sind. Du kannst z.B. wc -l (wordcount) auf der Kommandozeile aufrufen, oder mit while, feof() und fgets() zählen, ohne den Inhalt einzulesen.

    Gruß
    Christoph Jeschke

    --
    Zend Certified Engineer
    Certified Urchin Admin