2013-07-11 2 views
0

имеют следующие предоставить список реж в массивеЛистинг некоторых расширений в PHP Список Dir

for($index=0; $index < $indexCount; $index++) { 
     if (substr("$dirArray[$index]", 0, 1) != ".") { // don't list hidden files 
echo "<option value=\"".$dirArray[$index]."\">".$dirArray[$index]."</option>"; 
} 

Есть ли способ, что я могу изменить код выше, чтобы отображались только .JPG и .PNG?

Спасибо!

CP

+0

Возможный дубликат [Список конкретных файлов PHP в каталоге] (http://stackoverflow.com/questions/3062154/php-list-of-specific-files-in-a-directory) –

+0

'' $ dirArray [$ index] "обнаружено компромиссное программирование груза ... Возможно, вы хотите, чтобы http://php.net/pathinfo извлекал расширения файлов из имен файлов. –

+0

Есть несколько сходств, но я не вижу, как бы не переписывать все, что я мог бы получить, чтобы эти типы были перечислены. –

ответ

1

Вы можете использовать регулярные выражения, чтобы соответствовать, если имя файла заканчивается .jpg или .png

for($index=0; $index < $indexCount; $index++) 
{ 
    if(preg_match("/^.*\.(jpg|png)$/i", $dirArray[$index]) == 1) 
    { 
     echo "<option value=\"".$dirArray[$index]."\">".$dirArray[$index]."</option>"; 
    } 
} 

/i в конце регулярного выражения чувствительны к регистру флаг.

+0

Эй, Харвестер, спасибо за вашу помощь. Попытайтесь это сделать, но все еще отображает другие типы. Что я делаю не так? –

+0

@ChrisP Я отредактировал свой ответ в соответствии с вашим кодом. –

+0

Просто попробовал отредактированный код, и он отлично работает, спасибо! –

0
for($index=0; $index < $indexCount; $index++) { 
     if (substr($dirArray[$index], 0, 1) != "." 
      && strtolower(substr($dirArray[$index], -3)) == 'png' 
      && strtolower(substr($dirArray[$index], -3)) == 'jpg') 
      echo '<option value="'.$dirArray[$index].'">'.$dirArray[$index].'</option>'; 
} 

Это должно работать, но есть и более элегантные решения для этого, как с помощью DirectoryIterator (см here):

foreach (new DirectoryIterator('your_directory') as $fileInfo) { 
    if($fileInfo->isDot() 
     || !in_array($fileInfo->getExtension(), array('png', 'jpg'))) 
     continue; 
    echo sprintf('<option value="%s">%s</option>', 
     $fileInfo->getFilename(), 
     $fileInfo->getFilename()); 
} 

код не проверял, возможно, потребуется немного доделать с ним.

2
foreach($dirArray[$index] as $k => $v) { 
    if(in_array(pathinfo($v, PATHINFO_EXTENSION), array('jpg', 'png', 'jpeg')) { 
     echo '<option value="'.$v.'">'.$v.'</option>'; 
    } 
} 

Я принимаю некоторые вещи о вашем массиве файлов. Также есть причина, по которой вы не используете функцию readdir()?

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