Mailinglisten-Archive |
Hi Alex, Musik-Alex schrieb: > Das habe ich nun ausprobiert, aber es funktioniert auch nicht. Hier ein > Source-Schnipsel: > > $bol=file_exists("http://www.beispielzwei.de/daten.csv"); > if($bol) > { Du hast doch jetzt mehrfach gelesen, daß file_exists() nicht auf entfernte (remote) Dateien anzuwenden ist. :-) $bol wird daher in diesem Fall immer FALSE enthalten, womit dann alle Operationen in dem if($bol)-Zweig nicht ausgeführt werden. Lass die Abfrage doch einfach weg. Alle Funktionen, mit denen Du entfernte (remote) Dateien einlesen kannst, liefern FALSE zurück, wenn es nicht klappt. Das reicht doch. :-) > $datei=fopen("http://www.beispielzwei.de/daten.csv","r"); > if($datei) > { > $dateigroesse=filesize("http://www.beispielzwei.de/daten.csv"); > [...] > > Auch wenn ich die erste "file_exists"-Abfrage weglasse, streikt der > Befehl. Wie kann ich das - mit einfachen Mitteln - anders lösen? Die Mittel sind - zumindest teilweise - richtig. Du weißt nur noch nicht, sie auch richtig einzusetzen. Lies Dir mal die Handbuchseite zu fopen() durch: http://de3.php.net/manual/de/function.fopen.php Da ist auch ein Beispiel, wie die Datei dann ausgelesen wird, denn fopen() liefert nur die Resource zurück. Je nachdem, was Du vorhast, möchtest Du aber vielleicht anstatt fopen() und Co. die Funktion file() verwenden, die Dir die Datei direkt in einem Array serviert: http://de3.php.net/manual/de/function.file.php Mit implode() erhältst Du dann den Inhalt des Arrays, also der Datei, in einer String-Variable. Ab PHP 4.3.0 geht es übrigens noch einfacher: anstatt file() + implode() kannst Du ganz einfach file_get_contents() verwenden. ;-) Was die Funktion filesize() betrifft, so hättest Du auch hier einen Blick in das Handbuch werfen sollen. ;-) Dann hättest Du festgestellt, daß hier dieselbe Einschränkung wie bei file_exists() gilt: Die Funktion ist nicht auf entfernte Dateien anwendbar. Bleibt die Frage: Wie kommst Du dennoch an die Dateilänge? Wenn ich das richtig sehe, müßte das über die Länge des Strings mit dem Dateiinhalt gehen. So in etwa: $dateigroesse = strlen(implode("\n", file("http://www.beispielzwei.de/daten.csv"))); Jedenfalls für den ASCII-Datensatz sollte das zutreffen. Ich meine, einmal gelernt zu haben, daß dort 1 Buchstabe bzw. Zeichen = 8 Bits = 1 Byte gilt. Inwieweit das auch auf UTF-8 usw. übertragbar ist, kann sicherlich hier noch jemand beantworten. So genau kenne ich mich da nicht aus. Ich habe es noch nicht benötigt. Daher die Wissenslücke. :-))) Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive