hansi: Dateinamen bereinigen bei Upload

Hallo,

gibt es eine PEAR-Klasse oder ähnliches, mit der Dateinamen von Umlauten und sonstigen Sonderzeichen bereinigt werden können? http://simplecontent.net/phpsnippets/1/textersetzungen.html ist ja schonmal nicht schlecht eigentlich...;

Dank Hansi

  1. Hello,

    gibt es eine PEAR-Klasse oder ähnliches, mit der Dateinamen von Umlauten und sonstigen Sonderzeichen bereinigt werden können?

    wie wäre es denn mit str_replace() und einem Array für die Ersetzungen?
    Zur Not auch drei, die gestaffelt durchgegangen werden...

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

    1. hi,

      wie wäre es denn mit str_replace() und einem Array für die Ersetzungen?

      Das wäre Blacklisting.
      Whitelisting ist aber in den meisten Fällen, wo es um "Sicherheit" geht, empfehlenswerter.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. hallo wahsaga,

        dank. das o.g. Skript macht ja mit Ersetzungen der Umlaute, sz und einigen Akzenten erstmal eine Zwischenversion und bereinigt die dann um alles, was nicht kleinbuchstabe, zahl, punkt, bindestrich oder unterstrich ist. das wäre dann wohl whitelisting, oder? Eine vordefinierten Funktion dafür bei PEAR gibts wohl nicht, oder?

        gruß, hansi

        1. Hello,

          Bei Ersetzungen kann man eigentlich weder von Whitelisting (alles, was erlaubt ist), noch von Blacklistung (alles, was verboten ist) sprechen.

          Ein einfaches str_replace() mit Array hilft schon weiter.

          Allerdings ist das noch keine "Normierung".

          Dann müssten z.B. solche Dinge, wie

          "Dr. Heinrich Jasper Str"
             "Dr.-Heinrich-Jasper-Str."
             "Dr.-Heinrich-Jasper-Straße"
             "Dr.-Heinrich-Jasper-Straße"
             "Dr-Heinrich-Jasper-Straße"

          usw. nachher alle gleich aussehen.
          Und dann kommt das nächste Problem

          "Dr.-Heinr.-Jasper-Straße"

          Prinzipiell geht das das nur noch über SoundEx() oder ähnliche Funktionen, sowie eine Zerlegung in Sequenzen an den vermeintlichen Trennstellen.

          Harzliche Grüße vom Berg
          http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau

          1. hi,

            Bei Ersetzungen kann man eigentlich weder von Whitelisting (alles, was erlaubt ist), noch von Blacklistung (alles, was verboten ist) sprechen.

            Doch, kann man.
            Wieso sollte man nicht?

            Ein einfaches str_replace() mit Array hilft schon weiter.

            Nur, wenn einem Blacklisting ausreicht.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
          2. Hello,

            Bei Ersetzungen kann man eigentlich weder von Whitelisting (alles, was erlaubt ist), noch von Blacklistung (alles, was verboten ist) sprechen.

            Doch kann man. Esetzen ist immer Blacklisting, weil die replace funktion wissen will _was genau_ sie den nun ersetzen will. (und nicht was sie nicht ersetzen will)

            'Whitelisting' würde aber bedeuten das du mal alles aus dem String herausnimmst was du gebrauchen kannst. Und das machst nicht mit einer Ersetzen-Funktion, sondern einer Such-Funktion wie z.b. preg_match (http://www.php.net/preg_match)

            Eindeutig sicherer.

            1. Hello,

              Doch kann man. Esetzen ist immer Blacklisting, weil die replace funktion wissen will _was genau_ sie den nun ersetzen will. (und nicht was sie nicht ersetzen will)

              Dann musst Du in einer Schleife sooft ersetzen, bis nichts Verbotenes mehr auftaucht.
              Ein einfaches str_replace ist noch kein Blacklistung.

              Ein "Whitelisting" ist hier als Verarbeitungsschritt aber auch nicht angebracht, weil der OP keine Informaionsinhalte vernichten will, sondern sie nur umcodieren will in eine einheitliche (andere) Kodierungsform. Wie weit das möglich ist, steht auf einem anderen Blatt.

              Harzliche Grüße vom Berg
              http://www.annerschbarrich.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau

              1. hi,

                Doch kann man. Esetzen ist immer Blacklisting, weil die replace funktion wissen will _was genau_ sie den nun ersetzen will. (und nicht was sie nicht ersetzen will)

                Dann musst Du in einer Schleife sooft ersetzen, bis nichts Verbotenes mehr auftaucht.

                Und wie nennt man so eine Definition von "Verbotenem"? Eben, bspw. eine Blacklist.

                Ein einfaches str_replace ist noch kein Blacklistung.

                Es läuft aber in diesem Falle darauf hinaus.

                Ein "Whitelisting" ist hier als Verarbeitungsschritt aber auch nicht angebracht, weil der OP keine Informaionsinhalte vernichten will, sondern sie nur umcodieren will in eine einheitliche (andere) Kodierungsform. Wie weit das möglich ist, steht auf einem anderen Blatt.

                Ob _ausschliesslich_ das angebracht ist, steht wiederum auf einem anderen Blatt.

                gruß,
                wahsaga

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }
                1. Hello,

                  Dann musst Du in einer Schleife sooft ersetzen, bis nichts Verbotenes mehr auftaucht.

                  Und wie nennt man so eine Definition von "Verbotenem"? Eben, bspw. eine Blacklist.

                  Eine Transformation ist weder ein White- noch ein Blacklistung.

                  Die zu transformierenden Inhalte stehen schließlich in der "Whitelist" der Transformationsfunktion :-P

                  Bei Blacklisting würden die verbotenen Teile nur herausgenommen werden, oder aber der ganze Wert aufgrund des Vorhandenseins solcher verbotenen Werte abgelehnt werden...

                  Harzliche Grüße vom Berg
                  http://www.annerschbarrich.de

                  Tom

                  --
                  Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                  Nur selber lernen macht schlau

                  1. hi,

                    Die zu transformierenden Inhalte stehen schließlich in der "Whitelist" der Transformationsfunktion :-P

                    Dann kann deine Forderung,

                    Dann musst Du in einer Schleife sooft ersetzen, bis nichts Verbotenes mehr auftaucht.

                    ja gar nicht erfüllt werden - wenn nichts "Verbotenes" definiert ist, kann man auch nicht so lange ersetzen, "bis nichts Verbotenes mehr auftaucht".

                    gruß,
                    wahsaga

                    --
                    /voodoo.css:
                    #GeorgeWBush { position:absolute; bottom:-6ft; }