2016-06-03 2 views
1

У меня есть следующий код, который сканирует указанный каталог для JPGs:PHP scan_it, чтобы исключить каталоги, начинающиеся с подчеркивания

<?php 
$scan_it = new RecursiveDirectoryIterator("images/" . $this->item->extraFields->PropertYID->value . ""); 

foreach(new RecursiveIteratorIterator($scan_it) as $file) { 
if (strtolower(substr($file, -4)) == ".jpg" && 
strtolower(substr($file, -4)) == ".jpg") { 

echo '<div><img src="'.$file .'" alt="" />'."</div>"; 
} 
} 
?> 

Id просто хотите исключить из этого просканирует все папки, название которых начинаются с символа подчеркивания (_).

Чтобы уточнить, если структура каталога была следующая:

/images/interior/ 

/images/exterior/ 

/images/_room1/ 

/images/room2/ 

/images/room3/ 

Все каталоги, кроме _room1 будут включены.

Большое спасибо заранее!

+0

Вы проверили, работает ли код, который я дал, или нет? –

+0

@Amit Ray Извините, у меня только что был шанс проверить, я боюсь, что он не работает, его все еще находят все изображения, независимо от _ в начале имени папки, большое спасибо за вашу помощь, хотя Amit !!! – jimmywiddle

ответ

0

Вы можете искать «_» в имени папки

$directory = "images/' . $this->item->extraFields->PropertYID->value '"; 
     $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory), RecursiveIteratorIterator::CHILD_FIRST); 
    foreach($files as $name => $file){ 
     if(is_dir($file)){ //Edited 
      $pos = strpos($file, '_'); 
     } 
     if($pos === false){ 
      if (strtolower(substr($file, -4)) == ".jpg" && 
      strtolower(substr($file, -4)) == ".jpg") { 

      echo '<div><img src="'.$file .'" alt="" />'."</div>"; 
      } 
      } 
    } 

Если вы хотите удалить каталог с только первым символом, как «_» и его нормально, если его в середине, то вы можете сделать это

$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory), RecursiveIteratorIterator::CHILD_FIRST); 
foreach($files as $name => $file){ 
    if(is_dir($file)){ 
     $pos = strpos($file, '_'); 
    } 
    if(($pos === false) || $pos>0){ 
     if (strtolower(substr($file, -4)) == ".jpg" && 
     strtolower(substr($file, -4)) == ".jpg") { 

     echo '<div><img src="'.$file .'" alt="" />'."</div>"; 
     } 
     } 
} 
+0

Так жаль, что задержка в моем ответе! Но я боюсь, что он не работает, большое спасибо за вашу помощь! – jimmywiddle

+0

Я проверил еще раз и работаю в локальном хосте. –

+0

Это очень странно, я снова проверил и переименовал все папки с помощью _, но скрипт все еще находит все изображения. (Несомненная нота, но доказывает мне, что у меня все правильно настроено: у меня есть и другой php-код на этой странице, который вызывает образы, но по мере того, как я переименовал папки, которые они не нашли.) Еще раз спасибо за помощь Amit! – jimmywiddle

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