Hallo!
Also ich will auf meinem Server eine Datei speichern. Der Titel der Datei wird per GET-Variable übergeben. Jetzt muss ich diese Variable ja aber noch vor dem Speichern der Datei mit dem Namen bearbeiten. Auf was muss ich da alles achten? Umlaute, Leerzeichen....?
Und meine 2. Frage wäre, welche Funktion ich da brauche um diese Fehlerherde zu finden und sie so zu ändern, dass es kein Problem gibt.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Was darf nicht in einem Dateinamen stehen und wie gehts weg?
Einklappen
Neue Werbung 2019
Einklappen
X
-
Was darf nicht in einem Dateinamen stehen und wie gehts weg?
Stichworte: -
-
Ein Gast antworteteDann biete ihm doch selber die Lösung an?
-
Dann biete ihm doch selber die Lösung an?
PHP-Code:<?php
$dateiname = preg_replace('/[^a-zA-Z0-9_]/', '_', $dateiname);
?>
Einen Kommentar schreiben:
-
Ein Gast antworteteUnd was ist zB mit / und ggf \ ?
Und nochmals die Frage: Was für verstaubte Betriebssysteme kommen denn zum Einsatz, dass äöüß ein Problem sind?
Einen Kommentar schreiben:
-
str_replace(array('ä', 'ö', 'ü', 'ß', ' '), array('ae', 'oe', 'ue', 'ss', '_'), $dateiname);
Einen Kommentar schreiben:
-
Ein Gast antworteteZitat von BruchpilotAlso am Anfang ist $_POST['titel'] = "hallölälu du". Leider kommt das am Ende genau so raus, also die ö,ä, , etc. werden nicht geändert.
Einen Kommentar schreiben:
-
Ein Gast antworteteAlso am Anfang ist $_POST['titel'] = "hallölälu du". Leider kommt das am Ende genau so raus, also die ö,ä, , etc. werden nicht geändert.
Einen Kommentar schreiben:
-
Dann ist $_POST['title'] eben auch schon leer...
Edit: Ups, hab diese Seite überlesen.
Einen Kommentar schreiben:
-
Ein Gast antworteteZitat von xabbuhSteht in $_POST['title'] denn überhaupt etwas? Welche Ausgabe erhälst du mit var_dump($_POST)? Ist display_errors aktiviert? Steht error_reporting auf E_ALL?
Einen Kommentar schreiben:
-
Steht in $_POST['title'] denn überhaupt etwas? Welche Ausgabe erhälst du mit var_dump($_POST)? Ist display_errors aktiviert? Steht error_reporting auf E_ALL?
Einen Kommentar schreiben:
-
Ein Gast antworteteZitat von Connaralso erstmal:
warum machst du "" vor und nach der $_POST['title']. Des bringt doch garnix ...
zweitens:
Schneller geht es du machst das mit einem Befehl:
PHP-Code:$dateiname = addslashes($_POST['title']);
str_replace(array('ä', 'ö', 'ü', 'ß', ' '), array('ae', 'oe', 'ue', 'ss', '_'), $dateiname);
MFG Connar
Leider hat er bereits damit Probleme:
$dateiname = addslashes($_POST['title']);
Die Variable $dateiname ist in diesem Fall dann schon leer.
Einen Kommentar schreiben:
-
also erstmal:
warum machst du "" vor und nach der $_POST['title']. Des bringt doch garnix ...
zweitens:
Schneller geht es du machst das mit einem Befehl:
PHP-Code:$dateiname = addslashes($_POST['title']);
str_replace(array('ä', 'ö', 'ü', 'ß', ' '), array('ae', 'oe', 'ue', 'ss', '_'), $dateiname);
MFG Connar
Einen Kommentar schreiben:
-
Ein Gast antwortetestr_replace liefert eine Zeichenektte zurück. Diese musst Du benutzen.
Was für seltsame (alte?) Betriebsysteme/grafische Oberfläschen verwendet Ihr denn alle, dass deutsche Umlaute Schwierigkeiten machen?
Was ist mit / bzw \ ?
Was mit Fragezeichen, weiteren whitespace usw.?
Dagegen sind die Umlaute doch ein Witz.
Wenn es sicher sein soll, würde ich eher eine Liste erlaubter Zeichen benutzen und preg_replace alle nicht in dieser Liste enthaltenen Zeichen ersetzen lassen.
Einen Kommentar schreiben:
-
Ein Gast antworteteZitat von HKstimmt, da hab ich in der Schnelle gar nicht dran gedacht. Ich nehm auch immer str_replace() da es für meine Bedürfnisse meistens ausreicht bzw auch, wie du schon gesagt hast, von der Performance am Geeignetesten ist.
PHP-Code:$dateiname = "".$_POST['titel']."";
str_replace('ä', 'ae', $dateiname);
str_replace('ö', 'oe', $dateiname);
str_replace('ü', 'ue', $dateiname);
str_replace('ß', 'ss', $dateiname);
str_replace(' ', '_', $dateiname);
Einen Kommentar schreiben:
-
Ein Gast antwortetestimmt, da hab ich in der Schnelle gar nicht dran gedacht. Ich nehm auch immer str_replace() da es für meine Bedürfnisse meistens ausreicht bzw auch, wie du schon gesagt hast, von der Performance am Geeignetesten ist.
Einen Kommentar schreiben:
Einen Kommentar schreiben: