0

如何在不知道它是什么的情况下获得图像文件的扩展名?我尝试过使用 glob,如下所示,但它返回错误:“Array Notice: Undefined offset: 0”

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

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

5 回答 5

1

您的 glob 很糟糕,它返回一个空数组,因此出现错误。它不是一个正则表达式,它是一个 shell 扩展并且*是一个通配符。目前它将尝试匹配任何以.. IE。.htaccess.

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

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

于 2013-08-12T22:35:05.280 回答
1

pathinfo像这样使用 PHP 内置函数

$ext = pathinfo($filename, PATHINFO_EXTENSION);

例如

echo pathinfo("http://www.google.com//swf/fvere.ext",PATHINFO_EXTENSION);
//输出:分机

在这里阅读手册

希望有帮助:)

于 2013-08-12T22:35:41.593 回答
0

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

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

将输出“jpg”

于 2013-08-12T23:11:51.660 回答
0

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

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

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

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

于 2013-08-12T23:07:23.800 回答
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;
    }
}
于 2013-08-12T23:01:17.260 回答