special chars

  • eine Frageee: Es muß doch eine Funktion geben, die alle Character in einem String ersetzt, die nicht in einem Dateinamen vorkommen dürfen, oder?
    Ich bin sicher nicht der erste, der einem - nicht besonders intelligenten :devil:- User, das eingeben eines Dateinamen überlassen will ...

    *** Make it idiot proof, and someone will build a better idiot. ***

  • Hi,

    da du nicht die Sprache spezifiziert hast, spreche ich jetzt vom allgemeinen Fall:
    In der Regel wird bei derartigen Aufgaben nicht irgendwas ersetzt sondern einfach gecheckt, ob der String ein gültiger Dateinamen ist.
    Das geht recht einfach mit regular Expressions. Für Perl, php (preg_match benutzt perl-syntax) kann man das bei selfhtml.teamone.de unter Perl nachlesen.

    Eine weitere wichtige Sache wäre dann noch dass du checkst, ob die Datei bereits existiert. Dazu kannst du z.B. ein "ls [string]" durchfürhren und schauen ob es ein Ergebnis gibt. Natürlich solltest du das tun, _nachdem_ du verifiziert hast, dass das ein gültiger Dateiname ist. Sonst könnte jemand lustiger nach einem Strichpunkt beliebigen Shellcode ausführen.

    Natürlich kannst du mit RegExps auch z.B. alles durch X ersetzen, was nicht zu einer bestimmten menge an Zeichen gehört, aber das ist die umständliche Variante.

    lG
    Christoph

  • erm ... ja. Ich hab vergessen, die Sprache zu spezifizieren. Es geht um PHP. Danke auch für die Ausführung, aber das Ersetzen über preg_* ist nicht das Problem.

    Ich suche nach einer Funktion ähnlich wie htmlentities, die das für mich macht. Daß ich es mir selber für alle deutschen Sonderzeichen basteln kann, weiß ich schon. Aber ich bin zu faul dafür. ;)

    Wenn der user also z.B. eingibt, daß sein file "Ein Eßlöffel" heißen soll, dann möchte ich daß da draus "ein-essloeffel" generiert wird. Ich weiß, ich weiß. Ein tolles Bsp. :applaus:

    Wie gesagt ... ich kann ja nicht der erste sein, der so etwas braucht ...

    *** Make it idiot proof, and someone will build a better idiot. ***

  • Soweit ich weiß, gibt es da keine spezielle Funktion. Hier ein "Alternativvorschlag", wie das ich gelöst habe:

    PHP
    ...
    $SonderzeichenZeichen = array ("ä" => "ae", "ö" => "oe", "ü" => "ue", "Ä" => "ae", "Ö" => "oe", "Ü" => "ue", "ß" => "ss", " " => "_");
    $DateiName = $Datei['name'];
    $DateiName = strtr($DateiName, $SonderzeichenZeichen);
    $DateiName = strtolower($DateiName);
    ...
  • hmmm ... an so was hab ich leider auch schon denken müssen, wobei ich eher gedacht habe über den ASCII Code zu ersetzen, weil man sonst noch irgendwas vergißt ...

    das blöde ist nur z.B. daß alle ä, à, und was es da noch alles gibt, nicht direkt beiander liegen, sodaß man einfach eine Folge von Buchstaben im durch a ersetzen könnte ...

    *** Make it idiot proof, and someone will build a better idiot. ***

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!