PHP检查文件存在而不知道扩展名

2021/01/31 01:41 · php ·  · 0评论

我需要检查文件是否存在,但我不知道扩展名。

IE浏览器,我想做:

if(file_exists('./uploads/filename')):
 // do something
endif;

当然,这没有用,因为它没有扩展名。扩展名可以是jpg,jpeg,png,gif

任何不做循环的方式的想法?

你将不得不做一个 glob():

$result = glob ("./uploads/filename.*");

看看是否$result包含任何东西。

我有同样的需要,并尝试使用glob,但此功能似乎不可移植:

请参阅http://php.net/manual/en/function.glob.php中的注释

注意:此功能在某些系统(例如旧的Sun OS)上不可用。

注意:GLOB_BRACE标志在某些非GNU系统(例如Solaris)上不可用。

它也比opendir慢,看看:哪个更快:glob()或opendir()

因此,我制作了一个代码片段功能,可完成相同的操作:

function resolve($name) {
    // reads informations over the path
    $info = pathinfo($name);
    if (!empty($info['extension'])) {
        // if the file already contains an extension returns it
        return $name;
    }
    $filename = $info['filename'];
    $len = strlen($filename);
    // open the folder
    $dh = opendir($info['dirname']);
    if (!$dh) {
        return false;
    }
    // scan each file in the folder
    while (($file = readdir($dh)) !== false) {
        if (strncmp($file, $filename, $len) === 0) {
            if (strlen($name) > $len) {
                // if name contains a directory part
                $name = substr($name, 0, strlen($name) - $len) . $file;
            } else {
                // if the name is at the path root
                $name = $file;
            }
            closedir($dh);
            return $name;
        }
    }
    // file not found
    closedir($dh);
    return false;
}

用法:

$file = resolve('/var/www/my-website/index');
echo $file; // will output /var/www/my-website/index.html (for example)

希望能对某人有所帮助

本文地址:http://php.askforanswer.com/phpjianchawenjiancunzaierbuzhidaokuozhanming.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!