Sonderzeichen entfernen?

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

  • Sonderzeichen entfernen?

    Guten Morgen,

    ich habe das Problem das ich nach einem Datei(.mp3) upload die Sonderzeichen aus dem Dateinamen entfernen möchte bzw durch einen - ersetzt werden sollen.

    Meine idee ist :
    PHP-Code:
    $replace = array ('!','§',' $','%',' &',' ?','@');
    $name =  str_replace($replace"-",($_FILES['datei']['name'])) ; 
    Leider Passiert so mit dem String leider garnichts??

    Aber bin mir auch nicht sicher ob ich so auf dem richtigen Weg bin.

    Schonmal besten Dank für jeden Hinweis
    mfg
    mo

  • #2
    Zitat von mo78 Beitrag anzeigen
    Guten Morgen,

    ich habe das Problem das ich nach einem Datei(.mp3) upload die Sonderzeichen aus dem Dateinamen entfernen möchte bzw durch einen - ersetzt werden sollen.
    Definiere "Sonderzeichen".

    Es gibt noch mehr Zeichen als die von dir aufgezählten, die in Dateinamen Probleme machen können.

    Meine idee ist :
    PHP-Code:
    $replace = array ('!','§',' $','%',' &',' ?','@');
    $name =  str_replace($replace"-",($_FILES['datei']['name'])) ; 
    Ich werde aus deiner Liste ('!','§',' $','%',' &',' ?','@') nicht schlau. Sind die Leerzeichen vor '$', '&' und '?' Absicht oder Tippfehler?

    Fragezeichen sollten im Namen einer hochgeladenen Datei gar nicht erst vorkommen.

    Leider Passiert so mit dem String leider garnichts??
    Das kann ich dir nicht beantworten. Aber du kannst nachsehen, was in $_FILES['datei']['name'] steht, und was dein str_replace() daraus gemacht hat:

    PHP-Code:
    // vorher:
    var_dump($_FILES['datei']['name']);
    // nachher:
    var_dump($name); 
    Aber bin mir auch nicht sicher ob ich so auf dem richtigen Weg bin.
    Eventuell ist strtr() der geeignetere Kandidat für diesen Fall?

    PHP-Code:
    $name strtr($_FILES['datei']['name'], '!§$%&?@ ''-'); 
    Zuletzt geändert von fireweasel; 28.01.2011, 10:55.
    Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

    Kommentar


    • #3
      Ok ich werde das mit vardump mal checken.

      Ja die Leerzeichen sind Tippfehler

      Aber schonmal Danke
      mfg
      mo

      Kommentar


      • #4
        Ich würde nur Zeichen aus einer Whitelist zulassen. Diese 8 Zeichen sind nicht die einzigen Zeichen, die negative Auswirkungen haben können. Das kann eine gefährliche Sicherheitslücke sein.

        Oder noch besser: Dateien nur durchnummerieren und den Originalnamen in die Datenbank speichern.

        Kommentar


        • #5
          Zitat von h3ll Beitrag anzeigen
          Ich würde nur Zeichen aus einer Whitelist zulassen. Diese 8 Zeichen sind nicht die einzigen Zeichen, die negative Auswirkungen haben können. Das kann eine gefährliche Sicherheitslücke sein.
          Das wäre dann der nächste Schritt gewesen, weil ich finde, dass zum Whitelisting weder str_replace() noch strtr() richtig taugen. Ich wollte nur nicht sofort mit preg_replace() kommen:

          PHP-Code:
          $name preg_replace('/[^a-zA-Z0-9-]+/''-'$_FILES['datei']['name']; 

          Oder noch besser: Dateien nur durchnummerieren und den Originalnamen in die Datenbank speichern.
          Das Durchnummerieren hat, genauso wie die Alternative, einen eindeutigen Namen mit tempnam() zu erzeugen, den Nachteil, dass gleiche Dateien nicht erkannt werden können. Wenn man über die Daten eine Prüfsumme berechnet, kann man Dubletten ausschließen.
          Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

          Kommentar


          • #6
            Ich werd da mal ein bisschen ausprobieren aber denke preg_replace das ist das was ich brauche

            Besten Dank

            Kommentar

            Lädt...
            X