PHP - 在不知情的情况下获取文件扩展名(图像)

时间:2013-08-12 22:30:35

标签: php filenames glob

如何在不知道图像文件的情况下获取图像文件的扩展名?我已尝试使用glob,如下所示,但它返回错误:“数组注意:未定义的偏移量:0”

$path=BASEURL."content/images/profile_images/".$imageName;
$results= glob($path.'.*');

$filename = $results[0];
echo $filename;

5 个答案:

答案 0 :(得分:1)

你的glob是坏的,它返回一个空数组,因此错误。它不是正则表达式,它是shell扩展,*是通配符。目前,它会尝试匹配以.开头的任何文件名。即。 .htaccess

如果您希望它匹配任何文件使用:glob($path.'*')

如果您希望它匹配任何包含句点的文件:glob($path.'*.*')

答案 1 :(得分:1)

使用内置函数pathinfo的PHP

$ext = pathinfo($filename, PATHINFO_EXTENSION);

例如

echo pathinfo("http://www.google.com//swf/fvere.ext",PATHINFO_EXTENSION);
//Output : ext

阅读manual here

希望有所帮助:)

答案 2 :(得分:0)

这适合我,但这不是最好的方法:

$path="content/images/profile_images/".$image; 

$file = $path.".";

$ext = array("jpg", "jpeg", "JPEG", "gif", "png", "bmp");
for($x = 0; $x < 6; $x++)
{
    $image = $file.$ext[$x];
    if(file_exists($image))
    {
        $pic=$image;
        echo $pic;
    }
}

答案 3 :(得分:0)

根据您发布的代码作为答案,这将有效:

$dir = "content/images/profile_images/";
$results = glob("{$dir}{$imageName}.*");

if(count($results)>0){
   echo pathinfo($results[0], PATHINFO_EXTENSION);
}

您的错误似乎是无效的文件路径。图像不在包含BASEURL的路径上。

答案 4 :(得分:0)

您可以“爆炸”文件名的末尾以获取扩展名。

$file = 'image.jpg';
$temp = explode(".", $file);
$extension = end($temp);
echo $extension;

将输出“jpg”