Hello,
//$str='pfad/zur/datei/name.vorname.datum.extension'; $str='pfad/zur/datei/name';
Mein Code funktioniert, denn er entfernt die Dateiendung. Das es Dateien auch ohne Endung geben kann war aber nicht definiert. Ich habe nicht grundlos geschrieben:
"funktioniert" ist hier wohl auch eher nur noch Zufall :-P
Alles andere sind die Definitionsfragen. Definitionsfragen löst kein Programm.
Ich muss Dir da widersprechen!
Wie soll man denn auf eine Ressource zugreifen können, wenn vom Namen derselben nichts mehr übrig bleibt, weil deine geschachtelten Funktionen den beseitigt haben? Im Webumfeld würde dann höchstwahrscheinlich alternativ auf den Directory-Index verzweigt werden, was aber ohne zusätzliche programmtechnische Berücksichtigung zu merkwürdigen Seiteneffekten führen kann.
Die Extensions von Dateien sind konventionell so anzuordnen, dass man sie von rechts nach links abarbeiten könnte, falls dies gewünscht ist. Eine name.tar.gz-Datei würde also zuerst entpackt - es entsteht ein TAR-Ball - und dann kann der TAR-Ball plaziert und entfaltet werden.
Ich vertrete die Ansicht, wenn man sich beim Programmieren etwas nachdenkt udn sich Mühe gibt, die Grenzen des erstellten Konstruktes abzuklopfen, und vor allem sich eine explizite Schreibweise hält, bei der mögliche Erfolgs-/Fehlerkontrollen jedes einzelnen Statements auch wahrgenommen werden, dann hätten wir viel weniger WannaCry(pt)s und sonstige Lücken zu beklagen!
Man sollte sich nicht darauf hinausreden, dass das alles nur Definitionssache sei!
##Die Verwendung von pathinfo()
ist hier mMn eindeutig der sauberere Weg zum Ziel. Deine Matrjoschka-Programmierung in einer Zeile sorgt jedenfalls wesentlich eher für (unangenehme) Überraschungen, als die Verwendung einer Funktion, die lieber zwei Zeilen benötigt (anschließendes isset() ist angeraten), aber dafür abgesicherte Ergebnisse liefert.
Liebe Grüße
Tom S.
Es gibt nichts Gutes, außer man tut es
Andersdenkende waren noch nie beliebt, aber meistens diejenigen, die die Freiheit vorangebracht haben.