Uploadskript Umlaute ersetzen

brainsucker

Erfahrenes Mitglied
Hi,

ich habe ein kleines Uplaodskript geschrieben und möchte nun eine Prüfung einbauen, die mir Umlaute ersetzt. Aus ä soll somit ein ae aus ö ein oe usw. werden. Folgende Überlegung scheitert bisher:

PHP:
$dateipfad = preg_replace(array("/ /u", "/ä/u", "/ö/u", "/ü/u", "/[^a-z0-9-~\.]/u"), array("-", "ae", "oe", "ue", ""),$_FILES['hochgeladenesBild']['name'] );



Wieso funktioniert das nicht? Und hättet ihr evtl einen Tipp wie man das sonst hinbekommen könnte?
 
[phpf]str_replace[/phpf] ist die einfachste und auch performanteste Lösung dafür.

PHP:
$search = array('ä', 'ö');
$replace = array('ae', 'oe');

$text = "Hällö!";

echo str_replace($search, $replace, $text);
 
Hi,

danke für den Ratschlag, ich hatte dies in ähnlicher Form bereits auch mal versucht. Leider hatte dies nicht funktioniert. Habe jetzt dein Code einfach mal übernommen um zu schauen ob es geht, aber leider ohne Erfolg. Hier mal mein UploadScript, vielleicht findet jemand den Fehler?


PHP:
$ziel = "../uploadedPics/";
$zielUndDatei = $ziel.$_FILES['bild']['name'];

$max_size =  5242880; // Entspricht 5 Megabyte
$search = array('ä', 'ö', 'ü', 'ß', 'Ä', 'Ö', 'Ü'); 
$replace = array('ae', 'oe', 'ue', 'ss', 'Ae', 'OE', 'UE');



if($_FILES["bild"]['size']<  $max_size)
	{
	$j = 1;
	$pruefe = $ziel.$_FILES['bild']['name'];
							if(file_exists($pruefe))
								{
							  	do
									{
									$filepath = $ziel."copy".$j."_of_".$_FILES['bild']['name'];
									$filename = "copy".$j."_of_".$_FILES['bild']['name'];
									$status = file_exists($filepath);
									$j++;
									}
							  	while($status);
								} 
							else
									{
									$filepath = str_replace($search, $replace, $ziel.$_FILES['bild']['name']);
									$filename = str_replace($search, $replace, $_FILES['bild']['name']);
									}
						
						move_uploaded_file($_FILES["bild"]['tmp_name'], $filepath);

	}
 
Kann ich nicht bestätigen:

PHP:
$search = array('ä', 'ö', 'ü', 'ß', 'Ä', 'Ö', 'Ü');
$replace = array('ae', 'oe', 'ue', 'ss', 'Ae', 'OE', 'UE');
$str = "ärgerlich, böse, unglücklich, Straße, Äpfel, Österreich, Übung";
echo str_replace($search, $replace, $str);
//aergerlich, boese, ungluecklich, Strasse, Aepfel, OEsterreich, UEbung
 
Was genau funktioniert denn nicht?
Der Upload? Die Umbenennung? Gibt es eine Fehlermeldung? Zeigst du bereits alle Fehlermeldungen an?

"Funktioniert nicht" ist nicht gerade die tollste Umschreibung für ein Problem.
 
Hi,

da hast Du absolut recht, eine doofe Beschreibung. Der Upload funktioniert, eine Fehlermeldung erhalte ich ebenfalls nicht. Allerdings soll eine Datei die z.B. Äpfel.jpg heisst, als Aepfel.jpb gespeichert werden. Momentan speichert er Äpfel.jpg ab. Das möchte ich verhindern, klappt aber leider nicht.

Habe das Script von "timestamp" nun auch einfach ml in eine eigene, kleine php Datei gepackt und ausgeführt. Dort funktioniert das Ganze, d.h. die Umlaute werden korrekt ersetzt. Hoffe das war jetzt etwas präziser?
 
Oh

ich glaub ich hab den Fehler gerade gefunden ;)

PHP:
$ziel = "../uploadedPics/";
$zielUndDatei = $ziel.$_FILES['bild']['name'];

$max_size =  5242880; // Entspricht 5 Megabyte
$search = array('ä', 'ö', 'ü', 'ß', 'Ä', 'Ö', 'Ü'); 
$replace = array('ae', 'oe', 'ue', 'ss', 'Ae', 'OE', 'UE');



if($_FILES["bild"]['size']<  $max_size)
    {
    $j = 1;
    $pruefe = $ziel.$_FILES['bild']['name'];
                            if(file_exists($pruefe))
                                {
                                  do
                                    {
                                    $filepath = str_replace($search, $replace,$ziel."copy".$j."_of_".$_FILES['bild']['name']);
                                    $filename = str_replace($search, $replace,"copy".$j."_of_".$_FILES['bild']['name']);
                                    $status = file_exists($filepath);
                                    $j++;
                                    }
                                  while($status);
                                } 
                            else
                                    {
                                    $filepath = str_replace($search, $replace, $ziel.$_FILES['bild']['name']);
                                    $filename = str_replace($search, $replace, $_FILES['bild']['name']);
                                    }
                        
                        move_uploaded_file($_FILES["bild"]['tmp_name'], $filepath);

    }
 

Neue Beiträge

Zurück