Cet article partage principalement avec vous différentes méthodes pour obtenir des extensions de fichiers en PHP. J'espère qu'il pourra vous aider.
Collecté sur Internet, essentiellement des manières suivantes :
La première méthode :
function get_extension($file) { substr(strrchr($file, '.'), 1); }
Remarque :
la fonction strrchr() trouve le dernière occurrence d'une chaîne dans une autre chaîne et renvoie tous les caractères de cette position jusqu'à la fin de la chaîne.
La fonction substr() renvoie une partie d'une chaîne.
Méthode 2 :
function get_extension($file) { return substr($file, strrpos($file, '.')+1); }
Remarque :
La fonction strrpos() trouve la dernière occurrence d'une chaîne dans une autre chaîne.
La fonction substr() renvoie une partie d'une chaîne.
La troisième méthode :
function get_extension($file) { return end(explode('.', $file)); }
Remarque :
La fonction explosion() divise la chaîne en un tableau. La fonction
end() définit le pointeur interne du tableau sur le dernier élément et renvoie la valeur de cet élément (en cas de succès).
La 4ème méthode :
function get_extension($file) { $info = pathinfo($file); return $info['extension']; }
Remarque :
la fonction pathinfo() renvoie les informations sur le chemin du fichier sous la forme d'un tableau.
La cinquième méthode :
function get_extension($file) { return pathinfo($file, PATHINFO_EXTENSION); }
Remarque :
la fonction pathinfo() renvoie les informations sur le chemin du fichier sous la forme d'un tableau.
Après un rapide coup d'œil aux méthodes ci-dessus, elles semblent toutes fonctionner, en particulier les méthodes 1 et 2, que j'utilisais auparavant, je ne savais pas que pathinfo avait un deuxième paramètre. Mais si l’on y réfléchit bien, les quatre premières méthodes présentent diverses lacunes. Pour obtenir l’extension de fichier de manière complètement correcte, vous devez être capable de gérer les trois situations particulières suivantes.
Aucune extension de fichier
Le chemin contient les caractères., tel que /home/test.d/test.txt
Le chemin contient les caractères., mais le fichier ne s'étend pas. Par exemple, /home/test.d/test
C'est évident : 1 et 2 ne peuvent pas gérer la troisième situation, et 3 ne peuvent pas gérer correctement les première et troisième situations. 4 est géré correctement, mais lorsque l'extension n'est pas présente, un avertissement est émis. Seule la méthode 5 est la méthode la plus correcte. Au fait, jetez un œil à la méthode pathinfo. L'introduction sur le site officiel est la suivante :
$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"; // only in PHP 5.2+
Il renverra un tableau contenant jusqu'à quatre éléments, mais il n'y en aura pas toujours quatre. Par exemple, s'il n'y a pas d'extension, il y en aura. aucun élément d'extension n'existe, donc seule la quatrième méthode détectera l'avertissement. Mais phpinfo prend également en charge le deuxième paramètre. Vous pouvez passer une constante pour spécifier une certaine partie des données à renvoyer :
PATHINFO_DIRNAME - 目录 PATHINFO_BASENAME - 文件名(含扩展名) PATHINFO_EXTENSION - 扩展名 PATHINFO_FILENAME - 文件名(不含扩展名,PHP>5.2)
Les valeurs de ces quatre constantes sont respectivement 1, 2, 4 et 8. Au début, je pensais. Je pourrais en spécifier plusieurs via l'opération OR :
pathinfo($file, PATHINFO_EXTENSION | PATHINFO_FILENAME);
Plus tard, j'ai découvert que cela ne fonctionnait pas, cela ne renverrait que le plus petit de plusieurs OU constantes. Autrement dit, le plus petit bit parmi les quatre bits d’indicateur est une constante de 1.
Recommandations associées :
Comment utiliser php pour déterminer les extensions de fichiers
php Exemple de code pour obtenir des extensions de fichiers
Résumé de l'exemple de code pour obtenir l'extension de fichier en PHP
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!