Hallo Andi,
// 2. Ersetze mit str_replace die Backslashes durch Slashes.
Jep, das habe ich ja die ganze Zeit versucht zu machen ! Aber es funktioniert einfach nicht ! (oder nur teilweise).
und woher sollen wir wissen, was du probiert hast? Hast du immer noch den Code aus deinem ersten Posting?
<?
Verwende bitte die vollständigen Tags <?php anstatt der Kurzform, denn die short_open_tags sind bei vielen Hostern deaktiviert (aus gutem Grund, sie können Ärger machen, wenn man XML serverseitig verarbeiten möchte).
$name = urldecode($url_input);
$urloutput3 = str_replace("WINDOWS","",$name);
Für PHP: "Ersetze den String WINDOWS durch nichts, lösche ihn also."
$urloutput4 = str_replace("C:/","",$urloutput3);
Für PHP: "Ersetze den String C:/ durch nichts, lösche ihn also."
$urloutput5 = str_replace("Desktop","",$urloutput4);
Für PHP: "Ersetze den String Desktop durch nichts, lösche ihn also."
$urloutput6 = str_replace("ordner_2","",$urloutput5);
Für PHP: "Ersetze den String ordner_2 durch nichts, lösche ihn also."
$urloutput7 = str_replace("'","/",$urloutput6);
Für PHP: "Ersetze einfache Anführungszeichen ' durch Schrägstriche / ."
$urloutput8 = str_replace("C:","",$urloutput7);
Für PHP: "Ersetze den String C: durch nichts, lösche ihn also."
$urloutput9 = "www.test".".ch/".$urloutput8;
echo $urloutput9." ";
?>
Warum führst du eigentlich für jede Umwandlung eine neue Variable ein? Das macht's nur unnötig schwierig nachzuvollziehen. Ich frage mich auch, warum du ein paar wenige ausgewählte Verzeichnisnamen ("WINDOWS", "Desktop") aus dem Pfad entfernen willst.
Was würde die obige Kette aus Ersetzungen denn eigentlich produzieren:
C:\Windows\system32\kernel32.dll -> www.test.ch/\system32\kernel32.dll
E:\Profile\Martin\Desktop\Murphy's Law -> www.test.ch/E:\Profile\Martin\Murphy/s Law
Wahrscheinlich kann es daran liegen, dass die Schrägstriche maskiert sind, d.h., dass ein Zeichen ersetzt werden soll, das in Wahrheit ein anderes Aussehen hat. Oder die Zeichen sind per se irgendwie nicht änderbar, oder werden vom Browser immer wieder automatisch dazu gefügt. Ich stosse bei solchen Problemen immer wieder an unlogische oder historische Probleme.
Hä?? Ich glaube, du hast einfach das Prinzip der Maskierung von Sonderzeichen noch nicht verstanden. Steuerzeichen (also Zeichen mit Codes <0x20) und Anführungszeichen sind meist schwierig zu notieren, deshalb gibt es dafür sogenannte Escape-Sequenzen. So wird z.B. ein Tabulator als \t notiert und ein Zeilenvorschub als \n. Problematisch sind auch Anführungszeichen, wenn sie innerhalb von Strings auftreten, die ihrerseits in Anführungszeichen stehen - also stellt man den Anführungszeichen auch einen Backslash voran, um ihnen die Sonderbedeutung zu nehmen. Somit stehen ' und " also für einfache und doppelte Anführungszeichen, die exakt so im String stehen sollen. Schließlich muss man auch den Backslash maskieren, damit er diese Sonderbedeutung als Escape-Zeichen nicht mehr hat, er wird also als \ geschrieben.
- Warum müssen MS und Konsorten immer so eine Scheisse in der Dateihandhabung bauen ? Man nervt sich echt ab solch historischem Blödsinn.
Zum Beispiel?
Z.B. ist bei Windows immer noch keine Fehlermeldung eingebaut, wenn Ordnerstrukturen ca. mehr als 256 Zeichen lang sind, d.h. eine Datei in mehreren Ordnern verschachtelt nicht mehr richtig als "Pfad" angegeben wird.
Hä?
Habe es schon öfters erlebt, dass dann diese Datei plötzlich in der obersten Struktur wieder aufgetaucht ist, dann aber mit irgendwelchem Buchstabensalat im Namen...
Dann ist bei dir irgendein Unfall passiert, der mit dem eigentlichen Problem nichts zu tun hatte. Normal ist, dass Windows hemmungslos derart lange Pfade erzeugt, ohne zu warnen - soweit stimme ich dir zu. Lästig ist auch, dass man die dann nur noch mühsam nutzen und/oder wieder löschen kann, weil weder der Explorer noch die Konsole mit Pfadnamen >256 Zeichen ordentlich umgehen können. Windows selbst macht damit aber in der Regel keine Zicken, das Dateisystem bleibt trotzdem intakt.
Schönen Sonntag noch,
Martin
PS: Du plenkst!
Paradox ist, wenn der Innenminister sich äußert und der Außenminister sich erinnert.