Intereting Posts
Как использовать метод jquery $ .post () для отправки значений формы Как подключить два или несколько файлов и отправить почту в PHP cakephp 1.3, как использовать Paginator-> sort () для двух столбцов? Laravel – Как получить Доверенные роли определенного пользователя Как получить доступ к API Google Spreadsheets в PHP? как проверить, разрешена ли функция PHP system ()? и не отключен по соображениям безопасности что такое «php: // input»? В основном это наблюдается в webservice Как я могу исправить флеш-флагом PHP-потокобезопасное / непоточное безопасное рассогласование? Как включить расширение мыла CodeIgniter – Как получить список всех моих контроллеров динамически? PHP include не работает с файлами, отличными от индекса jQuery / Ajax call – он не работает на IE7 Использовать OR внутри, если условие else по обратному порядку порядка в php PHP: проверьте, все ли значения в массиве меньше x PHP конвертирует UTC в локальное время

Файл проверки PHP существует, не зная расширения

Мне нужно проверить, существует ли файл, но я не знаю расширения.

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) 

Надеюсь, что это поможет кому-то, Иоан

Вы знали о функции типа файла PHP? http://php.net/manual/en/function.filetype.php

Или иначе is_file() http://www.php.net/manual/en/function.is-file.php