str_replace bzw. Datei umbenennen ohne Umlaute geschlossen 

Status
Für weitere Antworten geschlossen.

AS-123

Registered +
Registriert
Juni 2008
Beiträge
60
Hallo,
folgendes Problem ich lade mittels Formular eine Datei auf meinen Server und damit diese Datei keine ä ü ö usw. enthält wandle ich diese mittels "str_replace" um.
Jetzt habe ich leider festgestellt das das nicht auf allen Servern gleich läuft, bei Tophoster.de geht es bei kilu.de geht es nicht dort wird die Datei mit Umlauten abgelegt. An was kann das liegen oder was ist falsch am Code.
PHP:
$filename = $_FILES['datei']['name'];
//wandelt die Umlaute um und erzeugt damit den neuen Dateinamen
$filename = str_replace (array("ä","Ä","ö","Ö","ü","Ü","ß"," "),array("ae","ae","oe","oe","ue","ue","ss","-"), $filename);
$filename = strtolower($filename); //wandelt alles in kleinbuchstaben um
mit "htmlentities" geht es ja auch nicht denn dann sieht der Dateiname so aus "käsetür.gpx"
Bei kilu.de wird trotz meines PHP Codes die Datei so "käsetür.gpx" abgelegt, und auf meinem anderen Server halt so "kaesetuer.gpx" wie es sein soll. Jetzt wäre meine Vermutung nur das kilu.de nicht mit dem array klarkommt, kann man das eventuell noch anders schreiben.
Uff und noch ein Problem, bei normalen Text muss ich bei Tophoster die Umwandlung so schreiben
$beschreibung = htmlentities($_POST['beschreibung'], ENT_QUOTES, 'UTF-8');
damit es geht bei kilu reicht $beschreibung = htmlentities($_POST['beschreibung'], ENT_QUOTES);
denn dort geht das mit dem 'UTF-8' nicht da wird es falsch ausgegeben. Kann es sein das ich irgendwo noch etwas an meiner Servereinstellung ändern muss.
Gruß und Danke AS-123
Meine MTB Track's als GPX, dargestellt auf OSM Karte
 
Zuletzt bearbeitet von einem Moderator:
Hi,
lass dir doch mal $filename vor der Umwandlung ausgeben.
Das kilu eine PHP-Version unter 4 benutzt wäre mir neu - also wird das auch mit Arrays klappen. Meine Vermutung ist halt, dass automatisch in UTF-8 umgewandelt wird.
php utf8 - Google Search

Gruß
Broken Sword
 
Hallo,
also ich hab mir jetzt noch mal den Namen vor der Umwandlung geben lassen.
PHP:
$filename = $_FILES['datei']['name'];
$filename = strtolower($filename); //wandelt alles in kleinbuchstaben um
echo $filename .'
';
Anzeige: käsetür.gpx
So dann sollte die Umwandlung greifen aber nichts, der Name bleibt auf dem Server aber gleich und wird nicht umgewandelt.
Kann es sein das die Datei noch im tmp Verzeichnis liegt. Hier noch mal der komplette Code dazu:
PHP:
//erstellt den Dateinamen aus der Origanalen Datei die hochgeladen wurde
$filename = $_FILES['datei']['name'];
$filename = strtolower($filename); //wandelt alles in kleinbuchstaben um
echo $filename .'
';

//wandelt die Umlaute um und erzeugt damit den neuen Dateinamen
$filename = str_replace (array("ä","ö","ü","ß"," "),array("ae","oe","ue","ss","-"), $filename);


if (file_exists('../110-gpx/'.$filename)) //prüft ob der Dateiname schon vorhanden
{echo "Eine Datei mit diesem Namen liegt schon auf dem Server.";} //wenn ja dann Ende
else {$type = explode(".", $filename); //sonst Prüfung auf Dateityp und Größe wenn ok wird Datei ins Verzeichnis kopiert
if (($type[count($type)-1] == 'gpx') and ($_FILES['datei']['size'] < 500000))
/* { Anfang */
{move_uploaded_file($_FILES['datei']['tmp_name'], "../110-gpx/$filename"); //Datei wird hochgeladen 
echo "Die Datei wurde hochgeladen."; //Bestätigung der Kopie
aber wie gesagt das ist nur auf Kilu.de so auf dem anderen Server funzt die ganze Sache und das macht mich etwas unsicher weil ich das Projekt eigentlich mal zum Down stellen will wenn es fertig.
Gruß AS-123
 
Also ich habe das mal bei kilu probiert und das funktioniert einwandfrei.
Aus käsetür.jpg wird kaesetuer.jpg :rolleyes:

Vielleicht mal Datei aktualisieren oder Browser-Cache leeren.

Gruß
Broken Sword
 
HI,
also Cache hab ich gerade geleert, und die Datei lösche ich auch immer wieder mittels FTP weil ich ja noch probiere.
Aber bei mir geht es nicht, kann doch aber nicht an gpx oder jpg liegen.
Nee daran liegt es nicht hab es gerade probiert.
Das ist schon komisch :(
Also muss ich noch mal weiter schauen.
Gruß AS-123

Habe das nur mal als Text probiert und da geht es.
PHP:
$filename = "Käsetür.gpx";
echo $filename .'
';
$filename = strtolower($filename);
echo $filename .'
';
$filename = str_replace (array("ä","ö","ü","ß"," "),array("ae","oe","ue","ss","-"), $filename);
echo $filename .'
';
aber halt nicht beim hoch laden der Datei aus dem Formular und dann das umbenennen.
 
Zuletzt bearbeitet von einem Moderator:
Status
Für weitere Antworten geschlossen.
Zurück
Oben Unten