Von Upgeloadeter Datei Endung und Dateiname trennen...

  • Code
    $file="test.jpg";
    
    
    $endung=substr (strrchr ($file, "."), 1);
    
    
    $name=substr($file, 0,  strlen($file)-strlen($endung)-1 );

    wenn es eifach geht, dann soll es einer posten.

    Aber bitte berachten das ein Dateiname mehrere Punkte enthalten kann.

  • Zitat von GreenRover
    Code
    $file="test.jpg";
    
    
    $endung=substr (strrchr ($file, "."), 1);
    
    
    $name=substr($file, 0,  strlen($file)-strlen($endung)-1 );

    wenn es eifach geht, dann soll es einer posten.

    Aber bitte berachten das ein Dateiname mehrere Punkte enthalten kann.

    Einfacher:

    Code
    $file = str_replace(".", " / ", "test.jpg");

    ergibt "test / jpg"

    G.a.d.M.

    Ronald

  • Ja, der link funtzt jetzt, hatte zuerst falsch angegeben...

    Jetzt kannst nochmal schauen..
    [php:1:7f41293cf0]
    <?
    echo "<h1>Test 1</h1>";
    $file = "hallo.test.jpg";
    list ($name,$endung) = split("\.", $file);
    echo $name. "\n";
    echo $endung;

    ?>
    [/php:1:7f41293cf0]

    Ich habe jetzt noch einen weiteren Punkt hinzugefügt...

    Kann man nicht sagen, das der letzte Punkt in der Variable die Trennung sein soll?

  • Nein Ronald, im Gegenteil! Ich will nur mein Problem lösen! Und wie es ausschaut, ist es noch nicht ganz gelöst! Ich kann ja nicht plötzlich ne Dateiendung namens "test" haben, oder?

    Zitat von GreenRover

    Aber bitte berachten das ein Dateiname mehrere Punkte enthalten kann.

    Genau das Problem besteht nämlich. Und meiner meinung nach, kann man das Problem beheben, indem man nur den letzten Punkt nimmt!
    ch hab das mal irgendwo gesehn, weis nur net mehr wo. Und cih selbst bin noch zu unerfahren..
    Ich kann ja kaum was mit dem befehl "split" was anfangen..

    Also, wenns dir jetzt grad egal is, dann geh ich in nen andres Forum, und probs da..

    Mfg

    Yngvar

  • Meine PHP-Lösung richtet sich an deinem beiispiel aus:

    Zitat von yngvar

    Ich will von der Hochgeladenen Datei die Endung von dem Namen Trennen, sodass dann z.B. das so aussieht:
    1. test.jpg = test / .jpg
    2. test.jpg = test. / jpg
    3. test.jpg = test / jpg

    Die dritte wäre am bnesten, die zwote geht auch, aber nicht so gut und die erste ist schlecht!

    Vielleicht solltest du erstmal näher erklären, was du genau vor hast.
    Geht es nur um den Upload von Grafiken, dann gibt es da wesentlich schönere PHP-Lösungen.

    Abgesehen davon habe ich noch keine Datein auf irgendwelchen Servern gesehen, die mehr als einen Punkt enthalten, (Apache)-Server-Standard ist Dateiname - Punkt - Dateiendung. Mehrere Punkte verwendet nur Microsoft und Windows-Server sind selten.

    Split trennt die Variable bei dem angegeben Zeichen, hier dem Punkt. Haben die Dateinamen mehrere Punkte, dann mußt du unter List auch entsprechend mehr Begriffe eingeben, also z.B.

    Code
    $file = "hallo.test.jpg"; 
    list ($name1,$name2,$endung) = split("\.", $file);

    G.a.d.M.

    Ronald

  • Ich habe in meinem Forum meinen Usern die Möglichkeit gegeben, Bilder jeglicher Art, gifs, Flashs, textdatein u.w. hochzuladen. ICh möchte aber speichern, wer was hochgeladen hat, erstens zur überprüfung und zweitens um meinen Usern später dann die Möglichkeit zu geben, das ganze in Virtuellen Ordnern zu speichern.
    Da es aber Probleme mit der Verwaltung der Datein geben wird, wenn ich sie einfach mit ausgebenlasse(Da es ja auch Flashdatein gibt u. ä.) habe ich mir überlegt, Buttons für die einzelnen Datein zu erstellen, also z.B. für ne Flashdatei den Icon vom Flashplayer.
    Um jetzt aber das ganze zu realsisieren, muss ich die Endung sepperat gespeichert haben. Also die Trennung...

    Mir ist da grad noch ne möglichkeit gekommen. In dem Dokument,m wo die Informationen gespeichert werden, wird ja auch die Datei hochgeladen.

    Code
    $files0001= $_FILES['Userdatei']['name'];


    Könnte man also vlt mit dem befehl auch dei Dateiendung herausbekommen?

  • Ich würde das so lösen:

    Arbeitet auch dann zuverlässig, wenn mehrere Punkte oder keine im Dateinamen sind.

    [php:1:c22139df56]<?php
    $temp = (substr_count($dateiname, ".") > 0) ? explode(".", $dateiname) : "";
    $endung = $temp ? $temp[count($temp)-1] : "";
    $datei = $temp ? substr($dateiname, 0, strlen($dateiname) - strlen($endung) - 1) : $dateiname;
    ?>[/php:1:c22139df56]

    Ausprobieren:

    http://modula.mo.funpic.de/dateiendung/

    ( http://modula.mo.funpic.de/dateiendung/?d….text.datei.txt
    http://modula.mo.funpic.de/dateiendung/?d…=dateiohnepunkt )

  • schon mal meien code ausprobiert ??!?

    Code
    $endung=substr (strrchr ($file, "."), 1);

    ergib alles nach dem letzten Punk zurück das substr da strrchr auch dne punkt mit ausgibt

    Ich meinte bloß, ob einder das:

    Code
    $name=substr($file, 0,  strlen($file)-strlen($endung)-1 );


    noch vereinfachen kann.