2015-03-11 12 views
8

Ich greife auf eine Anzahl von Dateien im SPLFileInfo-Objekt zu. Ich sehe einen Weg, um den Pfad, den Dateinamen und sogar die Erweiterung der Datei zu erhalten. Gibt es eine Möglichkeit, den Dateinamen ohne Erweiterung zu erhalten? Hier ist der Code, mit dem ich gearbeitet habe, aber ich hoffe, etwas eleganter zu bekommen. Gibt es eine Out-of-the-Box-Lösung?SPLFileInfo: Dateinamen ohne Erweiterung abrufen

$file = new SplFileInfo("path/to/file.txt.zip"); 

echo 'basename: '.$file->getBasename(); 
echo PHP_EOL; 
echo 'filename: '.$file->getFilename(); 
echo PHP_EOL;  
echo 'extension: '.$file->getExtension(); 
echo PHP_EOL;  
echo 'basename w/o extension: '.$file->getBasename('.'.$file->getExtension()); 

>>OUTPUT 
>>basename: file.txt.zip 
>>filename: file.txt.zip 
>>extension: zip 
>>basename w/o extension: file.txt 

Antwort

0

könnte ich nichts offiziell wie die .net finden - Path.GetFileNameWithoutExtension https://msdn.microsoft.com/en-us/library/system.io.path.getfilenamewithoutextension%28v=vs.110%29.aspx

Hier ist, was ich stattdessen preg_replace ("/.[^.]+$/" kann "" , $ datei-> getBasename());

Ich habe es mit „file.txt.zip“ getestet, um sicherzustellen, dass es gibt „file.txt“, nicht „Datei“

+6

'$ File-> getBasename ($ File-> getExtension() ''.)' ist, wie dies geschehen soll, nicht einen regulären Ausdruck. – salathe

+1

@salathe Senden Sie dies als Antwort, weil dies die richtige Antwort auf diese Frage ist. +1 – crmpicco

+0

@ Crmpicco Es war das Beste, was ich mir vorstellen konnte (lesen Sie das OP sorgfältig). Ich hatte auf etwas direkteres und eleganteres gehofft. – tzvi

9

Ich bin zu spät und alle Kredite sollten @salathe gehen zu sein Die erste hilft dem OP, aber hier ist the link to PHP manual für Basisfunktion. Grundsätzlich Sie die Erweiterung bekommen, dann schreibe einen Punkt . und schließlich die Basisnamen Funktion verwenden, um den Namen zu erhalten, wie folgt aus:

$file->getBasename('.' . $file->getExtension()) 

Für schnelles Lesen, hier ist die PHP-Handbuch Seite Beispiel:

$info = new SplFileInfo('file.txt'); 
var_dump($info->getBasename()); 

$info = new SplFileInfo('/path/to/file.txt'); 
var_dump($info->getBasename()); 

$info = new SplFileInfo('/path/to/file.txt'); 
var_dump($info->getBasename('.txt')); 

Ausgang:

string(8) "file.txt" 
string(8) "file.txt" 
string(4) "file" 
Verwandte Themen