Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php获取存储在系统中的文件的扩展名_Php - Fatal编程技术网

如何使用php获取存储在系统中的文件的扩展名

如何使用php获取存储在系统中的文件的扩展名,php,Php,我正在尝试检查某个位置中是否存在具有特定扩展名的文件名(user_id)。每当我执行此操作时,仅当执行了part并且控件没有转到else if部分时,即使图像不是png扩展名 $img1=“../img/profile\u imgs/”$user\u id..jpg”; $img2=“../img/profile\u imgs/”$user\u id。“.png”; $img3=“../img/profile\u imgs/”$user\u id。“.jpeg”; 如果(文件存在($img1))

我正在尝试检查某个位置中是否存在具有特定扩展名的文件名(user_id)。每当我执行此操作时,仅当执行了part并且控件没有转到else if部分时,即使图像不是png扩展名

$img1=“../img/profile\u imgs/”$user\u id..jpg”;
$img2=“../img/profile\u imgs/”$user\u id。“.png”;
$img3=“../img/profile\u imgs/”$user\u id。“.jpeg”;
如果(文件存在($img1))==1)
{       
回声“我在jpg这里”;
$prof_img=$img_name_jpg;
}
否则如果(文件存在($img2))=1)
{
echo“我在巴布亚新几内亚”;
$prof_img=$img_name_png;
}
否则如果(文件存在($img3))==1){
echo“我在jpeg中”;
$prof\u img=$img\u name\u jpeg;
}

为什么要使用这种复杂的条件:

if (is_bool(file_exists($img1))==1)
这应该很好:

$img1 = "../img/profile_imgs/".$user_id.".jpg";
$img2 = "../img/profile_imgs/".$user_id.".png";
$img3 = "../img/profile_imgs/".$user_id.".jpeg";

if (file_exists($img1))
{       
    echo "am here in jpg";
    $prof_img = $img_name_jpg;
}
else if (file_exists($img2))
{
    echo "am here in png";
    $prof_img = $img_name_png;
}
else if (file_exists($img3))
{
    echo "am here in jpeg";
    $prof_img = $img_name_jpeg;
}
在代码中:

is_bool(file_exists($img1)) == 1
测试
文件\u exists()
的结果是否为布尔值,它始终是布尔值

也就是说,您可以编写一个小的助手函数,使用您想要查找的扩展数组为您进行测试:

function filePathMatchingExtensions($path, array $extensions)
{
    foreach ($extensions as $extension) {
        if (file_exists($path . $extension)) {
            return $path . $extension;
        }
    }
    return false;
}

$extensions = ['.jpg', '.jpeg', '.png'];
$prof_img = filePathMatchingExtensions("../img/profile_imgs/$user_id", $extensions);

if ($prof_img !== false) {
    // it exists
} else {
    // it doesn't exist
}

我认为最好将文件名保存在数据库中,而不要试图猜测文件的扩展名。 无论如何,如果需要,您可以尝试使用@Typoheads reply或函数glob()

是否确实要使用is\u bool()?
文件\u exist()
始终返回布尔值。您需要测试函数的值,而不仅仅是它是否是布尔值。