Ankündigung

Einklappen
Keine Ankündigung bisher.

Variable um Dateinamen auf ungültige Zeichen zu prüfen

Einklappen

Neue Werbung 2019

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

  • Variable um Dateinamen auf ungültige Zeichen zu prüfen

    Hi!

    Die Überschrift sagt schon fast alles Ich habe einen String, den ich auf ungültige Zeichen bezüglich einer Nutzung als Dateiname überprüft.

    Gibt es da eine Funktion wie urlencode() und co?

    Danke


  • #2
    urlencode prüft nichts.

    Stichwort: regulärer Ausdruck.
    http://hallophp.de

    Kommentar


    • #3
      Prüfen war vielleicht falsch. Der quasi alle "falschen" Zeichen löscht z.B. An einen regulären Ausdruck, der lediglich Buchstaben und Zahlen findet habe ich auch schon gedacht. Ich dachte, da gäbs vielleicht schon was.

      Kommentar


      • #4
        prüfen - filtern - maskieren, entscheide Dich.
        --

        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


        --

        Kommentar


        • #5
          Ihr nehmt es aber genau maskieren, denke ich wäre am richtigsten, wobei maskieren ja im Dateisystem nicht erlaubt ist. Also doch filtern? Aber eben Umbennenen-Filtern. Ein Ä sollte wenigstens ein a werden. Es soll halt ein String rauskommen, den man problemlos als Dateinamen verwenden darf. Manmanman ist das kompliziert

          Kommentar


          • #6
            Als Programmierer musst Du Dinge genau nehmen. Und Du sagst nichtmal, um was für ein Dateisystem es geht, heißt das etwa, es soll 8.3 Format herauskommen damit auch FAT16 noch damit umgehen kann? Und wo liegt dein Problem mit Umlauten?

            Fragen über Fragen
            @fschmengler - @fschmengler - @schmengler
            PHP Blog - Magento Entwicklung - CSS Ribbon Generator

            Kommentar


            • #7
              Wichtige (reservierte) Zeichen, die auf keinen Fall vorkommen dürfen (Windows only):
              < (less than)
              > (greater than)
              : (colon)
              " (double quote)
              / (forward slash)
              \ (backslash)
              | (vertical bar or pipe)
              ? (question mark)
              * (asterisk)

              * NULL (Integer value zero, sometimes referred to as the ASCII NUL character)

              Characters whose integer representations are in the range from 1 through 31, except for alternate streams where these characters are allowed. For more information about file streams, see File Streams

              http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx
              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

              Kommentar


              • #8
                Mir würde es erstmal reichen, wenn es auf einem Linux-Dateisystem funktioniert. Fürs erste habe ich eine schlichte Funktion mit vielen strg_replace() geschrieben und sämtliche, einfach zugängliche Sonderzeichen auf der Tastatur mit nichts ersetzt. Aber glücklich bin ich damit nicht. Würde auch hier ein regulärer Ausdruck was bringen, in der form strg_replace(Ausdruck, '', String)? Ich meine, werden alle Zeichen ersetzt, die er findet, oder nur einer?

                Kommentar


                • #9
                  Natürlich bringt ein regulärer Ausdruck da was - insb. den Vorteil, dass du ihn in in Form einer White-List benutzen kannst, im Gegensatz zur Black-List, die du momentan verwendest, wenn du nur bestimmte Sonderzeichen ausfilterst.

                  Kommentar


                  • #10
                    Zitat von superheld Beitrag anzeigen
                    Mir würde es erstmal reichen, wenn es auf einem Linux-Dateisystem funktioniert.
                    rawurlencode()
                    (Funktioniert aber auch auf Windows-Dateisystemen inkl. FAT)

                    Fürs erste habe ich eine schlichte Funktion mit vielen strg_replace() geschrieben und sämtliche, einfach zugängliche Sonderzeichen auf der Tastatur mit nichts ersetzt.
                    Dadurch kann es zu Namensdopplungen kommen, was bedeuten kann, dass zwei Dateien mit ursprünglich unterschiedlichen Namen sich gegenseitig überschreiben können. Willst du das?

                    Würde auch hier ein regulärer Ausdruck was bringen, ...?
                    Für den Blacklisting-Fall (alle verbotenen Zeichen und Zeichenkombinationen) wahrscheinlich nicht. Für den Whitelisting-Fall (nur eine kleine Auswahl von Zeichen wird durchgelassen, der Rest kodiert) könnte ein RegExp reichen.

                    Filename#Comparison_of_file_name_limitations

                    Path_(computing)#Representations_of_paths_by_opera ting_system_and_shell

                    Comparison_of_file_systems#Limits
                    Wenn man die Wurst schräg anschneidet, hält sie länger, weil die Scheiben größer sind.

                    Kommentar

                    Lädt...
                    X