Dateiendung erkennen

Dieses Skript zeigt drei Möglichkeiten, wie man an die Dateiendung herankommt.

Zuerst wird ein Pfad vorgegeben, welcher zur gewünschten Datei führt. Ob absolut oder relativ spielt keine Rolle.

<?php
# die Datei
$path = 'http://example.com/dir/myFile.xml';
?>

Die erste Variante benutzt explode() und array_pop():

<?php
# die Dateiendung
$parts = explode('.', $path);
$endung = array_pop($parts);
?>

Die zweite Variante benutzt strrchr() und substr():

<?php
# die Dateiendung
$endung = substr(strrchr($path, '.'), 1);
?>

Die letzte Variante benutzt preg_match():

<?php
# die Dateiendung
preg_match('#\.([a-z0-9]+)$#i', $path, $match);
$endung = $match[1];
?>

Alle drei haben dasselbe Resultat (gespeichert in $endung):

xml

Nun gibt es jedoch einen grossen Unterschied, was die Geschwindigkeit der Funktionen betrifft. Bei 10'000 Durchläufen einer for-Schleife benötigt die erste Variante 27 ms, die zweite 15 ms und die dritte ganze 71 ms. Somit schneidet Variante 2 mit strrchr() am besten ab.

Aber aufgepasst: Wenn die Datei möglicherweise keine Endung besitzt, ist man mit Variante 3 am besten aufgehoben, denn nur diese gibt in diesem Falle ein leeres Resultat zurück.