ASCII Dateien identifizieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • ASCII Dateien identifizieren

    Hi Leute,

    ich möchte mit PHP Binär- und ASCII Dateien unterscheiden können und dabei nicht auf die Dateiendung zu Rate ziehen.
    Dazu habe ich folgende funktion gefunden:
    PHP-Code:
    /**
    * checks if a file is a ascii file or not
    *
    * @param string filename
    * @return boolean isASCII
    */
    function isASCII($file) {
        
    $array unpack('C*'$file);
        for(
    $i 1$max count($array); $i $max$i++) {
            if (
    $array[$i] < 32 && $array[$i] != 13 && $array[$i] != 10) {
                return 
    false;
            }
        }
        return 
    true;

    Leider ist diese Funktion unendlich langsam. Man braucht sie nur mal an einer 800kb großen ZIP Datei testen. Das langsamste ist der unpack() Befehl.

    Kennt jemand einen schnelleren Weg, der möglichst bei jeder Dateigröße gleich schnell funktioniert?
    [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
    [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
    [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

    © Harald Schmidt

  • #2
    hmm, da du ja auf den Inhalt zugreifen willst, wirst du da wohl nicht drumherum kommn, oder?

    Kommentar


    • #3
      Re: ASCII Dateien identifizieren

      du könntest die datei stückweise einlesen, immer ein paar hundert byte auf einmal.

      darauf dann ein preg_match() ansetzen, dessen suchausdruck alle im ascii-zeichensatz vorkommenden zeichen (AFAIK alle von 0 bis 127?) als gruppe beinhaltet, diese wird dann noch negiert.
      sobald das dann zum ersten mal zuschlägt, hast du eine nicht-ASCII-datei erwischt ... so in etwa.

      ob's performanter wird ...?
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar

      Lädt...
      X