如何在不知道图像文件的扩展名的情况下获得它?我尝试过使用glob,如下所示,但它返回一个错误:"Array Notice:Undefined offset:0"
$path=BASEURL."content/images/profile_images/".$imageName;
$results= glob($path.'.*');
$filename = $results[0];
echo $filename;
您的glob坏了,它返回了一个空数组,因此出现了错误。它不是一个正则表达式,它是一个shell扩展,*
是一个通配符。目前,它将尝试匹配任何以.
开头的文件名。即.htaccess
。
如果您希望它与任何文件匹配,请使用:glob($path.'*')
如果您希望它匹配任何带有句点的文件:glob($path.'*.*')
像这样使用函数pathinfo
中内置的PHPs
$ext=路径信息($filename,pathinfo_EXTENSION);
例如
echo pathinfo("http://www.google.com//swf/fvere.ext",PATHINFO_EXTENSION);//输出:ext
请阅读此处的手册。
希望能有所帮助:)
这对我有效,但不是最好的方法:
$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;
}
}
根据您作为答案发布的代码,这将起作用:
$dir = "content/images/profile_images/";
$results = glob("{$dir}{$imageName}.*");
if(count($results)>0){
echo pathinfo($results[0], PATHINFO_EXTENSION);
}
您的错误似乎是无效的文件路径。图像不在包含BASEURL
的路径上。
您可以"分解"文件名的末尾以获得扩展名。
$file = 'image.jpg';
$temp = explode(".", $file);
$extension = end($temp);
echo $extension;
将输出"jpg"