So entfernen Sie die Erweiterung aus dem Dateinamen (nur echte Erweiterung!) [duplicate]
Lesezeit: 4 Minuten
Marc
Ich suche nach einer kleinen Funktion, mit der ich die Erweiterung aus einem Dateinamen entfernen kann.
Ich habe beim Googeln viele Beispiele gefunden, aber sie sind schlecht, weil sie nur einen Teil der Zeichenfolge mit „.“ entfernen. . Sie verwenden den Punkt als Begrenzer und schneiden einfach die Saite ab.
Die Erweiterung kann 3 oder 4 Zeichen lang sein, daher müssen wir prüfen, ob sich der Punkt an der 4. oder 5. Stelle befindet, und ihn dann entfernen.
Wie kann es gemacht werden?
Was ist eine „echte“ Erweiterung? Sie möchten die letzten 4 oder die letzten Zeichen entfernen, wenn ihnen ein Punkt vorangestellt ist?
– Clyfe
7. März 2010 um 10:18
„Col. Shrapnel“ – es ist für Windows-Benutzer konzipiert. „clyfe“ – ja, ich möchte alles nach dem Punkt entfernen, aber nur, wenn es sich auf Position 4 oder 5 befindet, was „.jpeg“ oder „.mp3“ darstellt. Ich möchte es einfach nicht entfernen. Ich weiß, dass ich es manuell mit str-pos machen und die Zeichenfolge mit der if-Anweisung ausschneiden kann (wenn 5 pos = Punkt, dann schneide (rtrim) von rechts 5 Zeichen, wenn 4 pos = Punkt, dann rtrim 4, andernfalls ohne Änderung zurückkehren. Aber Vielleicht ist es die schnellere Lösung.
– Marc
7. März 2010 um 10:30 Uhr
Was ist mit .package-Dateien? Oder .Einheit? Es scheint etwas willkürlich, eine Erweiterung auf 4 Zeichen zu beschränken.
– rdb
16. September 2016 um 0:03
Wenn Marc zurückkommt, hoffe ich, dass er die akzeptierte Antwort ändert.
Es muss kein vollständiger Pfad sein, um ordnungsgemäß zu funktionieren. Es wird genauso gerne analysiert file.jpg als /path/to/my/file.jpg.
Ich habe das bereits überprüft. Gleicher Fehler wie oben. Versuchen Sie, auf „$path_parts“ zuzugreifen[‘filename’]” from T.sec – “xxx” 23 12 32 3 a twym2 Es wird nur T zurückgegeben. Aus dem obigen Beispiel sollte es nichts entfernen!
Dies ist eine ziemlich einfache Lösung und funktioniert unabhängig von der Länge der Erweiterung oder der Anzahl der Punkte oder anderen Zeichen in der Zeichenfolge.
$filename = "abc.def.jpg";
$newFileName = substr($filename, 0 , (strrpos($filename, ".")));
//$newFileName will now be abc.def
Im Grunde wird nur nach dem letzten Vorkommen von gesucht. und verwendet dann eine Teilzeichenfolge, um alle Zeichen bis zu diesem Punkt abzurufen.
Es ähnelt einem Ihrer gegoogelten Beispiele, ist jedoch einfacher, schneller und einfacher als reguläre Ausdrücke und die anderen Beispiele. Na ja, meiner Meinung nach jedenfalls. Hoffe, es hilft jemandem.
Ich weiß, das kommt viel zu spät, aber ich denke, das ist die beste Antwort. Funktioniert super.
– Agbogidi Michael
29. Juni 2017 um 21:03
Dies funktioniert beispielsweise nicht für *nix-versteckte Dateien ohne Erweiterung. .htaccess
Was ist eine „echte“ Erweiterung? Sie möchten die letzten 4 oder die letzten Zeichen entfernen, wenn ihnen ein Punkt vorangestellt ist?
– Clyfe
7. März 2010 um 10:18
„Col. Shrapnel“ – es ist für Windows-Benutzer konzipiert. „clyfe“ – ja, ich möchte alles nach dem Punkt entfernen, aber nur, wenn es sich auf Position 4 oder 5 befindet, was „.jpeg“ oder „.mp3“ darstellt. Ich möchte es einfach nicht entfernen. Ich weiß, dass ich es manuell mit str-pos machen und die Zeichenfolge mit der if-Anweisung ausschneiden kann (wenn 5 pos = Punkt, dann schneide (rtrim) von rechts 5 Zeichen, wenn 4 pos = Punkt, dann rtrim 4, andernfalls ohne Änderung zurückkehren. Aber Vielleicht ist es die schnellere Lösung.
– Marc
7. März 2010 um 10:30 Uhr
Was ist mit .package-Dateien? Oder .Einheit? Es scheint etwas willkürlich, eine Erweiterung auf 4 Zeichen zu beschränken.
– rdb
16. September 2016 um 0:03
Wenn Marc zurückkommt, hoffe ich, dass er die akzeptierte Antwort ändert.
– HoldOffHunger
7. Januar 2022 um 2:24