Cet article résume plusieurs façons d'utiliser PHP pour obtenir le suffixe du nom d'un fichier. C'est très simple et pratique. Les amis dans le besoin peuvent s'y référer
Par exemple, le suffixe des fichiers image, jpg. ou gif, etc.
Il existe deux méthodes
Premièrement, si $img est le nom du fichier image
$img=12345.gif; $img_ext = substr($img, strrpos($img, '.'));
Deuxièmement, utilisez le tableau PHP, lisez d'abord la chaîne du nom de fichier dans le tableau
$ext2=explode(".",$img); $count=count($ext2); $count2=$count-1; $file_name = $urlstr .'.'.$ext2[$count2];//得到后缀并重新定义新的文件名$file_name
Vous trouverez ci-joint la méthode résumée par d'autres amis :
第1种方法: function get_extension($file) { substr(strrchr($file, '.'), 1); } 第2种方法: function get_extension($file) { return substr($file, strrpos($file, '.')+1); } 第3种方法: function get_extension($file) { return end(explode('.', $file)); } 第4种方法: function get_extension($file) { $info = pathinfo($file); return $info['extension']; } 第5种方法: function get_extension($file) { return pathinfo($file, PATHINFO_EXTENSION); }
Après un rapide coup d'œil aux méthodes ci-dessus, elles semblent toutes fonctionner, en particulier les méthodes 1 et 2, avant je ne savais pas que pathinfo avait une seconde paramètre. Toujours utilisé. 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 des caractères., tels que /home/test.d/test.txt
Le chemin contient les caractères ., mais le fichier n'a pas d'extension. 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 la première et la 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 aura pas toujours être quatre. Par exemple, s'il n'y a pas d'extension, il n'y aura pas d'élément d'extension, donc l'avertissement sera trouvé dans la quatrième méthode. 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 1, 2, 4, 8. Au début, je pensais pouvoir spécifier plusieurs opérations OR :
pathinfo($file, PATHINFO_EXTENSION | PATHINFO_FILENAME);
Plus tard, j'ai découvert que cela ne fonctionnait pas. renvoie la plus petite de plusieurs constantes d’opération OR. Autrement dit, le plus petit bit parmi les quatre bits d’indicateur est une constante de 1.
Résumé : Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.
Recommandations associées :
Résumé de l'implémentation PHP de l'obtention du répertoire parent du fichier actuel
Implémentation PHP de l'obtention la classe d'encapsulation IP client et serveur End
Algorithme d'implémentation des enveloppes rouges WeChat basé sur 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!