2010-07-08 2 views
4

Обратите внимание, что я хочу, чтобы номер отсека изменился.Поиск файла с определенным именем с любым расширением

<?php 
    $compartment = "1"; 

     /* HERE I NEED SOME SCRIPT TO FIND THE EXTENSION OF THE FILE NAME $compartment AND TO SAVE THAT AS A VARIABLE NAMED 'EXTENSION'.*/ 

    if (file_exists($compartment.$extension)) { 
     echo "$compartment.$extension exists! 
    } else { 
     echo "No file name exists that is called $compartment. Regardless of extension." 
    } 
?> 


<?php 
    $compartment = "2"; 

     /* HERE I NEED SOME SCRIPT TO FIND THE EXTENSION OF THE FILE NAME $compartment AND TO SAVE THAT AS A VARIABLE NAMED 'EXTENSION'.*/ 

    if (file_exists($$compartment.$extension)) { 
     echo "$compartment.$extension exists! 
    } else { 
     echo "No file name exists that is called $compartment. Regardless of extension." 
    } 
?> 

Thank you!

+0

Что делать, если есть m руду, чем одну? В любом случае вы можете использовать glob. – Artefacto

+0

А что вы ожидаете от находки? Искать только в одной конкретной папке или искать во всех папках, начиная с определенного? Соответствует ли частичное совпадение или соответствует ли полное имя файла? В любом случае, вы можете проверить функции [opendir] (http://www.php.net/opendir) и [readdir] (http://www.php.net/readdir) в ссылке PHP – wimvds

+0

. быть одним файлом с таким именем, поэтому мне не нужно беспокоиться о нескольких совпадениях. Частичные совпадения не должны возвращаться. То есть Я хочу вернуться 1 и 13 отдельно. –

ответ

16

Необходимо glob().

$compartment = "2"; 

$files = glob("/path/to/files/$compartment.*"); // Will find 2.txt, 2.php, 2.gif 

// Process through each file in the list 
// and output its extension 
if (count($files) > 0) 
foreach ($files as $file) 
{ 
    $info = pathinfo($file); 
    echo "File found: extension ".$info["extension"]."<br>"; 
} 
else 
    echo "No file name exists called $compartment. Regardless of extension." 

, кстати, то, что вы делаете выше, плачет за цикл. Дон»повторить свои блоки кода, но обернуть один из них в этом:

$compartments = array(1, 3, 6, 9); // or whichever compartments 
            // you wish to run through 

foreach ($compartments as $compartment) 
    { 
    ..... insert code here ....... 
    } 
+0

Спасибо. Мне нужно будет ссылаться на «восстановленный» файл пару раз в коде. Будет ли это проблемой? –

+0

@ Andy no, если вы делаете это внутри 'foreach $ files в виде $ file' цикла. (Вы также можете использовать переменную за ее пределами, но затем вам нужно выбрать, какой из них). –

2

Посмотрите:

  • glob - Найти имена пути, совпадающие с шаблоном
  • fnmatch - Match имя файла с шаблоном
  • pathinfo - Возвращает информацию о пути к файлу
+0

+1 для ручных ссылок. –

Смежные вопросы