Blog

It's a Wonderful Life

PHP如何动态地获取文件的扩展名

2016-12-05 18:21 Posted in Learn with 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_DIRNAMEPATHINFO_BASENAMEPATHINFO_EXTENSIONPATHINFO_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