Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

$_FILES['datei']['name'] mit str_replace ändern, funktioniert nicht.

Diskussion: $_FILES['datei']['name'] mit str_replace ändern, funktioniert nicht. im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Hi, ich möchte einen Dateinamen von Umlauten entfernen, dafür nutze ich folgendes Skript, Wenn ich $_FILES['datei']['name'] druch z.B. "öäü" ...

Antwort
Alt 24.08.09, 19:05   #1 (permalink)
ba2
Guest
 
Likes:
Standard $_FILES['datei']['name'] mit str_replace ändern, funktioniert nicht.

Anzeige

Hi,

ich möchte einen Dateinamen von Umlauten entfernen, dafür nutze ich folgendes Skript, Wenn ich $_FILES['datei']['name'] druch z.B. "öäü" ersetze funktioniert es auch nur in der jetzigen Konstellation leider nicht.

PHP-Code:
<?php
$dname 
$_FILES['datei']['name'];
$dname str_replace("ä""ae"$dname);
$dname str_replace("Ä""Ae"$dname);
$dname str_replace("ö""oe"$dname);
$dname str_replace("Ö""Oe"$dname);
$dname str_replace("ü""ue"$dname);
$dname str_replace("Ü""Ue"$dname);
$dname str_replace("ß""ss"$dname);
?>
Woran kann das liegen?
  Mit Zitat antworten
Alt 24.08.09, 19:16   #2 (permalink)
Member of Honour
 
Benutzerbild von Brabax
 
Registriert seit: 04.10.01
Brabax Leistung: 8086Brabax Leistung: 8086
Brabax eine Nachricht über ICQ schicken
Likes: 42
Standard

Probier mal VARIABLE= ereg_replace("SUCHSTRING", "ERSATZSTRING", VARIABLE)

Ich glaub bei str_replace war irgendein Haken, der dafür sorgt, dass das anders arbeitet, als man annimmt.

lg

Brabax
__________________

<< Wir leben bereits im morgigen Gestern, doch vom gestrigen Morgen sind wir noch weit entfernt. >>

<< Träume sind Schäume. Es liegt an dir ob du sie lebst oder ein Schaumschläger bist! >>

<< Erst wenn man beginnt zu implizieren, wird man merken, dass einem sowieso keiner richtig zuhört. >>
Brabax ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 24.08.09, 19:19   #3 (permalink)
ba2
Guest
 
Likes:
Standard

Das Funktioniert leider auch nicht,
wie gesagt wenn ich z.B. $_FILES['datei']['name'] durch "öööääü" ersetze, funktioniert das ganze wunderbar, also muss das ja mit $_FILES['datei']['name'] zusammenhängen, aber inwiefern $_FILES['datei']['name'] anders in seiner Beschaffenheit als "öööääü" ist, ist mir unklar.
  Mit Zitat antworten
Alt 24.08.09, 19:23   #4 (permalink)
Member of Honour
 
Benutzerbild von Brabax
 
Registriert seit: 04.10.01
Brabax Leistung: 8086Brabax Leistung: 8086
Brabax eine Nachricht über ICQ schicken
Likes: 42
Standard

[EDIT]: sorry, beim ersten mal zu schnell gelesen und nur die Hälfte mitgenommen [/EDIT]

Wenn du beide Variablen mal echo'est, gibt es dann einen Unterschied?
__________________

<< Wir leben bereits im morgigen Gestern, doch vom gestrigen Morgen sind wir noch weit entfernt. >>

<< Träume sind Schäume. Es liegt an dir ob du sie lebst oder ein Schaumschläger bist! >>

<< Erst wenn man beginnt zu implizieren, wird man merken, dass einem sowieso keiner richtig zuhört. >>
Brabax ist offline   Mit Zitat antworten
Alt 24.08.09, 19:29   #5 (permalink)
ba2
Guest
 
Likes:
Standard

Nein,

was mir gerade durch den Kopf geht, ist $_FILES['datei']['name'] eventuell kein String(Vom Variable Type) und kann deswegen nicht bearbeiten werden?

EDIT: naja laut gettype($_FILES['datei']['name']); ist es ein string, komisch, ich verstehe es nicht.
  Mit Zitat antworten
Alt 24.08.09, 19:32   #6 (permalink)
Member of Honour
 
Benutzerbild von Brabax
 
Registriert seit: 04.10.01
Brabax Leistung: 8086Brabax Leistung: 8086
Brabax eine Nachricht über ICQ schicken
Likes: 42
Standard

Eigentlich nicht, aber das kannst du ganz einfach testen, indem du

Code:
$dname = (string) $_FILES['datei']['name'];
verwendest.

EDIT: jetzt warst du zu schnell Geht es denn, wenn du andere Zeichen ersetzt?
__________________

<< Wir leben bereits im morgigen Gestern, doch vom gestrigen Morgen sind wir noch weit entfernt. >>

<< Träume sind Schäume. Es liegt an dir ob du sie lebst oder ein Schaumschläger bist! >>

<< Erst wenn man beginnt zu implizieren, wird man merken, dass einem sowieso keiner richtig zuhört. >>
Brabax ist offline   Mit Zitat antworten
Alt 24.08.09, 19:36   #7 (permalink)
ba2
Guest
 
Likes:
Standard

Nein,

EDIT: hab es auch so versucht:
$dname = "".$_FILES['datei']['name']."";

geht auch nicht.
  Mit Zitat antworten
Alt 24.08.09, 19:48   #8 (permalink)
Member of Honour
 
Benutzerbild von Brabax
 
Registriert seit: 04.10.01
Brabax Leistung: 8086Brabax Leistung: 8086
Brabax eine Nachricht über ICQ schicken
Likes: 42
Standard

Hmpf...kniffelig. Ein Workarround wäre sowas:

Code:
$dname = $_FILES['datei']['name'];
$dname = str_replace("ä", "ae", $_FILES['datei']['name']);
$dname = str_replace("Ä", "Ae", $dname);
$dname = str_replace("ö", "oe", $dname);
$dname = str_replace("Ö", "Oe", $dname);
$dname = str_replace("ü", "ue", $dname);
$dname = str_replace("Ü", "Ue", $dname);
$dname = str_replace("ß", "ss", $dname);
oder vllt.

Code:
$dname = $_FILES['datei']['name'];
$dname = (string) $dname;
$dname = str_replace("ä", "ae", $dname);
$dname = str_replace("Ä", "Ae", $dname);
$dname = str_replace("ö", "oe", $dname);
$dname = str_replace("Ö", "Oe", $dname);
$dname = str_replace("ü", "ue", $dname);
$dname = str_replace("Ü", "Ue", $dname);
$dname = str_replace("ß", "ss", $dname);
Oder eben erst alles ersetzen und dann in $dname speichern.

Ich würde noch tippen, dass PHP wegen der Umlaute meckert, weil es halt keine Standard-Zeichen sind... aber das würde dann ja auch die anderen Tests aushebeln.

ist ['name'] denn auch richtig? Muss das nicht ['tmp_name'] sein? *alles durcheinander werf bis was gescheites rauskommt*?
__________________

<< Wir leben bereits im morgigen Gestern, doch vom gestrigen Morgen sind wir noch weit entfernt. >>

<< Träume sind Schäume. Es liegt an dir ob du sie lebst oder ein Schaumschläger bist! >>

<< Erst wenn man beginnt zu implizieren, wird man merken, dass einem sowieso keiner richtig zuhört. >>
Brabax ist offline   Mit Zitat antworten
Alt 24.08.09, 19:51   #9 (permalink)
ba2
Guest
 
Likes:
Standard

ja name ist richtig, die variable wird ja ausgegeben also die "bearbeite" $dname aber es sein keine Änderungen ausgeführt worden.

EDIT:

Sinn gemäß ist der code so

PHP-Code:
<form action="?upload" method="post" enctype="multipart/form-data">
<input type="file" name="datei"><br>
<input type="submit" value="Hochladen">
</form>
<?php

    
if (isset($_GET["upload"]))
    {
        
$dname $_FILES['datei']['name'];
        
$dname ereg_replace("ä""ae"$dname);
        
$dname ereg_replace("Ä""Ae"$dname);
        
$dname ereg_replace("ö""oe"$dname);
        
$dname ereg_replace("Ö""Oe"$dname);
        
$dname ereg_replace("ü""ue"$dname);
        
$dname ereg_replace("Ü""Ue"$dname);
        
$dname ereg_replace("ß""ss"$dname);

    echo 
$dname;
    }
?>
  Mit Zitat antworten
Alt 24.08.09, 19:57   #10 (permalink)
Member of Honour
 
Benutzerbild von Brabax
 
Registriert seit: 04.10.01
Brabax Leistung: 8086Brabax Leistung: 8086
Brabax eine Nachricht über ICQ schicken
Likes: 42
Standard

Was sagt denn folgendes:

(Datei mit "ä" im Namen hochladen!)

Code:
$dname = $_FILES['datei']['name'];

$firstpos1 = strpos($_FILES['datei']['name'], "ä");
$firstpos1 = strpos($dname, "ä");

echo $firstpos1." : ".$firstpos2;
EDIT: Die if sprint auch 100%ig an? mach mal bitte im form action="upload=test", wenn nicht.
__________________

<< Wir leben bereits im morgigen Gestern, doch vom gestrigen Morgen sind wir noch weit entfernt. >>

<< Träume sind Schäume. Es liegt an dir ob du sie lebst oder ein Schaumschläger bist! >>

<< Erst wenn man beginnt zu implizieren, wird man merken, dass einem sowieso keiner richtig zuhört. >>
Brabax ist offline   Mit Zitat antworten
Alt 24.08.09, 20:07   #11 (permalink)
ba2
Guest
 
Likes:
Standard

doch es arbeitet, ich bekomme den text ja ausgegeben also befindet sich php in der IF Abfrage

PHP-Code:
<form action="?upload" method="post" enctype="multipart/form-data">
<input type="file" name="datei"><br>
<input type="submit" value="Hochladen">
</form>
<?php

    
if (isset($_GET["upload"]))
    {
        
$dname $_FILES['datei']['name'];
        
$dname ereg_replace("ä""ae"$dname);
        
$dname ereg_replace("Ä""Ae"$dname);
        
$dname ereg_replace("ö""oe"$dname);
        
$dname ereg_replace("Ö""Oe"$dname);
        
$dname ereg_replace("ü""ue"$dname);
        
$dname ereg_replace("Ü""Ue"$dname);
        
$dname ereg_replace("ß""ss"$dname);

$firstpos1 strpos($_FILES['datei']['name'], "ä");
$firstpos2 strpos($dname"ä");

echo 
$firstpos1." : ".$firstpos2;

    }
?>
so bekomme ich nur einen Doppelpunkt.
  Mit Zitat antworten
Alt 24.08.09, 20:15   #12 (permalink)
ba2
Guest
 
Likes:
Standard

YEAH ich hab das Problem gelöst:

der Fehler ist an ner ganz anderen stelle unzwar:

Der Doctype stand auf: iso-8859-1 ich habe ihn auf UTF-8 geändert und siehe da es geht, lol
  Mit Zitat antworten
Alt 24.08.09, 20:15   #13 (permalink)
Member of Honour
 
Benutzerbild von Brabax
 
Registriert seit: 04.10.01
Brabax Leistung: 8086Brabax Leistung: 8086
Brabax eine Nachricht über ICQ schicken
Likes: 42
Standard

D.h. __theoretisch__, dass $_FILES nichts enthält (also keine "ä") und dies entsprechend an die dname weitergibt.

Da scheint ganz generell was nicht zu passen mit der $_FILES oder sie ist nicht übertragbar. Da weisz ich leider nicht weiter.
__________________

<< Wir leben bereits im morgigen Gestern, doch vom gestrigen Morgen sind wir noch weit entfernt. >>

<< Träume sind Schäume. Es liegt an dir ob du sie lebst oder ein Schaumschläger bist! >>

<< Erst wenn man beginnt zu implizieren, wird man merken, dass einem sowieso keiner richtig zuhört. >>
Brabax ist offline   Mit Zitat antworten
Alt 24.08.09, 20:17   #14 (permalink)
ba2
Guest
 
Likes:
Standard

13 Sekunden vor deinen Thread hab ich gepostet, das ich es hin bekommen habe ^^

EDIT: Danke für deine Hilfe
  Mit Zitat antworten
Alt 24.08.09, 20:20   #15 (permalink)
Member of Honour
 
Benutzerbild von Brabax
 
Registriert seit: 04.10.01
Brabax Leistung: 8086Brabax Leistung: 8086
Brabax eine Nachricht über ICQ schicken
Likes: 42
Standard

autsch... das war der Fehler? :-D Fieses Ding, da muss man erstmal drauf kommen. Dann war wenigstens meine Spekulation oben nicht ganz so abwegig, wie ich dachte
Muss ich mir für die Zukunft merken.

Freut mich, dass es läuft
__________________

<< Wir leben bereits im morgigen Gestern, doch vom gestrigen Morgen sind wir noch weit entfernt. >>

<< Träume sind Schäume. Es liegt an dir ob du sie lebst oder ein Schaumschläger bist! >>

<< Erst wenn man beginnt zu implizieren, wird man merken, dass einem sowieso keiner richtig zuhört. >>
Brabax ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » $_FILES['datei']['name'] mit str_replace ändern, funktioniert nicht.
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
DOS-Ordner verschieben in einer Batch Datei funktioniert nicht Bogus Code Kitchen 12 21.05.06 21:01
str_replace für array realisierbar? TeeKayo2 (Web-) Design und webbasierte Sprachen 7 04.05.06 17:17
Passwort durch dass ändern der Sam Datei ändern Xalon (In)security allgemein 3 08.01.06 18:54
PHP-Datei per JS einbinden, funktioniert nicht. Iker C. (Web-) Design und webbasierte Sprachen 12 11.11.03 15:12
Datei Infos ändern in C.. PeaceTreaty Code Kitchen 5 26.08.02 21:21


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61