N Möglichkeiten, Dateierweiterungen in PHP zu erhalten
Aus dem Internet gesammelt, im Wesentlichen die folgenden Methoden:
Die erste Methode:
function get_extension( $file)
{
substr(strrchr($file, '.'), 1);
}
Die zweite Methode:
function get_extension($file)
{
return substr($file , strrpos($file, '.') 1);
}
Die dritte Methode:
function get_extension($file)
{
return end(explode('.', $ file));
}
Die vierte Methode:
function get_extension($file)
{
$info = pathinfo($file)
return $info['extension'); ];
}
Die fünfte Methode:
function get_extension($file)
{
return pathinfo($file, PATHINFO_EXTENSION);
Nach einem kurzen Blick auf Die oben genannten Methoden scheinen alle zu funktionieren, insbesondere die Methoden 1 und 2, die ich verwendet habe, bevor ich nicht wusste, dass Pathinfo einen zweiten Parameter hat. Doch wenn man genau darüber nachdenkt, weisen die ersten vier Methoden verschiedene Mängel auf. Um die Dateierweiterung vollständig korrekt zu erhalten, müssen Sie mit den folgenden drei Sondersituationen umgehen können.
Keine Dateierweiterung
Der Pfad enthält die Zeichen ., wie zum Beispiel /home/test.d/test.txt
Der Pfad enthält die Zeichen ., aber die Datei hat keine Erweiterung. Zum Beispiel /home/test.d/test
Es ist offensichtlich: 1 und 2 können mit der dritten Situation nicht umgehen, und 3 kann mit der ersten und dritten Situation nicht richtig umgehen. 4 wird korrekt behandelt, aber wenn die Erweiterung nicht vorhanden ist, wird eine Warnung ausgegeben. Nur Methode 5 ist die korrekteste Methode. Schauen Sie sich übrigens die Pathinfo-Methode an. Die Einleitung auf der offiziellen Website lautet wie folgt:
$file_path = pathinfo('/www/htdocs/your_image.jpg');
echo "$file_path ['dirname']n"; >echo "$file_path ['basename']n";
echo "$file_path ['extension']n";
echo "$file_path ['filename']n"; // nur in PHP 5.2
Es wird zurückgegeben. Ein Array enthält bis zu vier Elemente, aber es werden nicht immer vier sein. Wenn beispielsweise keine Erweiterung vorhanden ist, gibt es auch kein Erweiterungselement, sodass die vierte Methode eine Warnung erkennt. Aber phpinfo unterstützt auch den zweiten Parameter. Sie können eine Konstante übergeben, um einen bestimmten Teil der zurückzugebenden Daten anzugeben:
PATHINFO_DIRNAME – Verzeichnis
PATHINFO_BASENAME – Dateiname (einschließlich Erweiterung)
PATHINFO_EXTENSION – Erweiterung
PATHINFO_FILENAME – Dateiname (ohne Erweiterung , PHP>5.2)
Die Werte dieser vier Konstanten sind 1, 2, 4 bzw. 8. Zuerst dachte ich, ich könnte mehrere durch die OR-Operation angeben:
pathinfo($file, PATHINFO_EXTENSION |. PATHINFO_FILENAME);
Später habe ich herausgefunden, dass dies nicht funktioniert, es wird nur die kleinste von mehreren ODER-Konstanten zurückgegeben. Das heißt, das kleinste Bit unter den vier Flag-Bits ist eine Konstante von 1.