Von string $datei die Endung (.jpg) kürzen

aphaean

Mitglied
Ich komme mir gerade ziemlich blöd vor - also lacht bitte nicht allzu laut ;).

Ich würde gerne von einem Dateinamen die endung abhacken - nur fällt mir dazu keine elegante Lösung ein. Gibt es eine Funktion, damit ich zB alles vor dem Punkt auslesen kann? Oder muss ich etwa den ganzen string umkehren, die ersten 4 chars abhacken und dann das Teil wieder umdrehen?

*verzweifeltguck*

anna

//EDIT:

öhm Danke für die Resonanz ;) .... das Problem hat sich über explode lösen lassen (toll sowatt - warum sagt mir das keiner früher?)

cheerio,
anna
 
vor einem ähnlichen Problem stand ich auch schon mal. Man kann Strings schon bei gewissen Zeichen trennen und zwar mit explode.

z.B.
PHP:
$dateiname = explode(".jpg", $deinstring);
print $dateiname[0];

Funktioniert so quasi einwandfrei. Aber ich denke direkt mit regulären Ausdrücken zu arbeiten wäre besser.


Edit:
Argh ich hätte bis Ende lesen sollen...dann hätte ich die Antwort hier nicht schreiben müssen :D
 
Hallo!

Oder man benutzt gleich die richitge Funktion:
PHP:
echo basename("bla.blub.foo.bar.jpg", ".jpg";
Nachteil könnte aber sein dass die Datei z.b. die Endung .jpeg haben könnte.

Flexibler währe man hiermit:
PHP:
<?php
$file = "bla.blub.foo.bar.jpg";
$array = explode(".", $file);
for($i = 0; $i <= count($array)-2; $i++) {
    $filename[] = $array[$i];
}
echo implode(".", $filename);
?>
So spielt die Dateiendung keine Rolle.
Auch im Dateinamen möglicherweise enthaltene Punkte spielen keine Rolle.

Gruss Dr Dau
 
Um die Dateiendung herauszufiltern ohne den genauen String kennen zu muessen kann man recht einfach mit explode() und implode() arbeiten, vorausgesetzt es wird keine doppelte Endung (z.B. .tar.gz) genutzt. Aber das kommt ja bei den meisten Usern eher weniger vor, dass man mit solchen Endungen konfrontiert wird.
Hier nun mal der Code:
PHP:
$datei='meine.kleine.bilddatei.jpg';
$filename=explode('.',$datei);
unset($filename[count($filename)-1]);
$filename=implode('.',$filename);
echo $filename;
Ausgabe:
meine.kleine.bilddatei
 
Ich habe mir dazu mal eine Funktion geschrieben:

PHP:
function get_filename($filename){
	$fn = substr($filename, 0, strrpos($filename, '.'));
	return $fn;
} 
echo get_filename('test.dateiname.test.jpg');
# ergibt: test.dateiname.test
 
Zurück