Mailinglisten-Archive |
Hallo! :-) Am Donnerstag, 6. Juli 2006 10:15 schrieb Tobias Neumann: > Hallo, > ich wüsste nun spontan kein Befehl, aber man könnte die erste Zeile > auslesen und dann die ersten x Zeichen auf ein Alphabet prüfen, > welches nur aus Buchstaben und Zahlen besteht. > > Wäre zumindest eine mögliche (in?)effiziente Lösung. Die Unterscheidung Text / Binär läuft einem bei Windows und Linux ja normalerweise nicht über den Weg. Bisher habe ich nur damit zu tun gehabt, wenn ich Dateien per FTP übertragen habe oder mit PHP Dateien geöffnet habe. Windows ordnet Dateien meines Wissens aufgrund der Dateiendung und der Zuordnung der Dateiendung zu einem Programm dem passenden Programm zu. Linux geht ähnlich vor, guckt aber wohl auch noch in die Datei und liest für die korrekte Zuordnung den Content-Type aus. In PHP gibt es die folgende Funktion, mit der Du den MIME-Content-Type der Datei bestimmen kannst: http://de3.php.net/manual/en/function.mime-content-type.php Dann müßtest Du halt mal die MIME-Types durchgehen und intern in Deinem Skript eine Zuordnung zu Text bzw. binär vornehmen: http://www.iana.org/assignments/media-types/ MIME-Types, die mit "text/" beginnen, kannst Du auf jeden Fall schon mal eindeutig als Text betrachten. :-) Die anderen Gruppen mußt Du dann sorgfältig durchgehen. application/xhtml+xml ist z.B. ebenfalls Text, genauso wie image/svg+xml. Ansonsten kannst Du auch einmal bei Wikipedia gucken: http://de.wikipedia.org/wiki/Bin%C3%A4rdatei Da steht zu lesen: "Grundsätzlich zählen alle Dateien zu Binaries, die keinen lesbaren Text enthalten. Für die meisten der heute verwendeten 8-Bit-Zeichensätze gilt: nicht lesbare Sonderzeichen sind Zeichen mit ASCII-Werten von 0 bis 31 und lesbare Zeichen sind Zeichen mit Werten von 32 bis 126. Die Lesbarkeit von Zeichen mit Werten ab 127 ist abhängig vom verwendeten Zeichensatz." Wenn Du danach gehst, mußt Du nur gucken, ob Du in der Datei eines dieser Zeichen zwischen 0 und 31 findest. Nur auf das Null-Byte zu prüfen, könnte u.U. nicht ausreichen, weil ich gelesen habe - keine Ahnung, ob das wirklich stimmt, weil ich mich mit diesen Details noch nie beschäftigt habe -, daß es auch Binärdateien geben kann, die das Null-Byte nicht enthalten. Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive