PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dateiname aus Pfades "spliten"


burgi
30.12.2003, 21:22:27
Hallo zusammen

Ich hab folgendes Problem. Ich hab z.B. einen Pfad "C:WindowsDesktopweinichtwas.txt", der per Post vom Form Control "File" übergeben wird. Davon möchte ich nun nur den Dateinamen haben. basename funktioniert komischerweise nicht.

Was mir noch aufgefallen ist, dass der String beim Übergeben etwas so aussieht "C:WindowsDesktopweinichtwas.txt", obwohl ich daran nicht ändere.

Bei Split hab ich das Suchmuster nicht ganz raus. Ich habs mit $datei_tmp = split("\",$datei) versucht, was aber eine Fehlermeldung ausgab.

Vielen Dank für eure Hilfe!

burgi

SnocH
30.12.2003, 21:33:51
split ist schon richtig, aber dein string wird datei in einen array umgewandelt, bei dem in deinem fall das einen neuen wert einleitet:

soll heißen:



$text = "halloduda";

$array = array() // ich weiß aber nicht ob du die zeile überhaupt brauchst..

$array = split("",$text);



dann hast du die werte:

$array[0]= hallo
$array[1]= du
$array[2]= da

_______________

der hat mein geklaut .. split("",$text)

_______________

burgi
30.12.2003, 21:50:58
Wird mit nicht das Anführungszeichen "deaktiviert"?

SnocH
31.12.2003, 11:17:26
mit dem backslash wir nicht nujr das anführungszeichen deaktivert.

aber ich hab keine ahnung wie ich das erklären soll..

ok, ich geb zu, das ist ein blödes beispiel gewesen. dann machs halt mit dem normalen slash.

dann zähl die anzahl der arrays ( im beispiel wären das 4)..zieh einen ab (der array-index startet ja bei 0) und schon hast du deinen dateinamen in form einer variable.

in etwa so:


$pfad = "E:/TMP/Admin/bild.jpg";

$array = split("/",$pfad);

$foo = sizeof($array)-1; // d.h. $foo ist 3

echo $array[$foo];





greeez, des snotschl'

meikel (†)
31.12.2003, 12:25:14
Original geschrieben von burgi
Ich hab folgendes Problem. Ich hab z.B. einen Pfad "C:WindowsDesktopweinichtwas.txt", der per Post vom Form Control "File" übergeben wird. Davon möchte ich nun nur den Dateinamen haben. basename funktioniert komischerweise nicht.
Wundert mich: "Unter Windows wird sowohl der Slash (/) als auch der Backslash () als Trennzeichen bei Pfadangaben benutzt. Unter anderen Betriebssystemen hingegen nur der Slash (/)."

Was mir noch aufgefallen ist, dass der String beim Übergeben etwas so aussieht "C:WindowsDesktopweinichtwas.txt", obwohl ich daran nicht ändere.Huch? Was verstehst Du unter 'übergeben'? Formular, Datenbank, sonstwas? Ist das vielleicht eine PHP Version, bei der magic_quote_* defekt ist?

Bei Split hab ich das Suchmuster nicht ganz raus. Ich habs mit $datei_tmp = split("\",$datei) versucht, was aber eine Fehlermeldung ausgab.

Handbuch über split:
"Die Funktion preg_split(), die eine zu Perl kompatible Syntax regulärer Ausdrücke verwendet, ist häufig die schnellere Alternative zu split()."
"wenn Sie die Fähigkeiten regulärer Ausdrücke nicht benötigen, ist die Verwendung von explode() schneller, weil diese Funktion nicht unter der Last der Engine für reguläre Ausdrücke steht."

Extra wegen Dir: WAMP installiert (BigApache) und basename() kontrolliert. Dein ursprüngliches Problem kann ich nicht nachvollziehen.

Und um ganz sicher zu gehen:
$name = basename(str_replace('','',$name));
Das klappt auch...

burgi
02.01.2004, 19:17:46
Original geschrieben von meikel Huch? Was verstehst Du unter 'übergeben'? Formular, Datenbank, sonstwas? Ist das vielleicht eine PHP Version, bei der magic_quote_* defekt ist?
Über ein Fileformular