Blog
It's a Wonderful Life
PHP如何动态地获取文件的扩展名
如题,今天在做brandpronounce这个项目的时候需要把down到的图片和brand结合起来,但是图片扩展名各不相同,导致无法一起使用相同的后缀链接,要转换图片格式又嫌麻烦,在尝试了很多种方法都无果之后,采用了以下效率比较低的方案。
首先使用scandir()
函数把imgs文件夹下的图片罗列出来,放在一个foreach()
循环中,使用pathinfo()
把每次取得的文件名和brand名进行比对,如果一致就返回这个文件名。
以下是scandir()
和pathinfo()
函数的官方文档:
array scandir ( string $directory [, int $sorting_order [, resource $context ]] )
返回一个 array,包含有 directory 中的文件和目录。
directory
:- 要被浏览的目录
sorting_order
:- 默认的排序顺序是按字母升序排列。如果使用了可选参数
sorting_order
(设为 1),则排序顺序是按字母降序排列。 context
:context
参数的说明见手册中的 Streams API 一章。
mixed pathinfo ( string $path [, int $options = PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME ] )
pathinfo()
返回一个关联数组包含有path
的信息。返回关联数组还是字符串取决于options
。
path
:- 要解析的路径。
options
:- 如果指定了,将会返回指定元素;它们包括:
PATHINFO_DIRNAME
,PATHINFO_BASENAME
和PATHINFO_EXTENSION
或PATHINFO_FILENAME
。 - 如果没有指定 options 默认是返回全部的单元。
举个例子:
<?php
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');
echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
echo $path_parts['filename'], "\n"; // since PHP 5.2.0
?>
以上例程会输出:
/www/htdocs/inc
lib.inc.php
php
lib.inc