2016-05-23 6 views
0

を:は、PHPはRecursiveFilterIterator、ショーを拡張し、無視し、私はのようなものを使用していたファイル

class MyRecursiveFilterIterator extends RecursiveFilterIterator { 

    public static $FILTERS = array(
     '.htaccess', 
     '.html', 
    ); 

    public function accept() { 
     return !in_array(
      $this->current()->getFilename(), 
      self::$FILTERS, 
      true 
     ); 
    } 

} 

$iterator = new RecursiveDirectoryIterator($dir); 
$iterator->setFlags(RecursiveDirectoryIterator::SKIP_DOTS); 
$filter = new MyRecursiveFilterIterator($iterator); 
$all_files = new RecursiveIteratorIterator($filter,RecursiveIteratorIterator::SELF_FIRST); 

は、指定された$ dirをパス内のすべてのファイルとフォルダを一覧表示します。

MyRecursiveFilterIteratorは、デフォルトのRecursiveFilterIteratorを拡張し、.htaccessやhtmlなどの特定のファイル拡張子を除外します。今、私は、.jpg、.pngなどの特定のファイルタイプだけを表示する機能と、除外されたものを保持する機能を追加したいと考えています。

答えて

1

こんにちは、

私だけであなたの質問の最初の部分を参照してください:」...今、私は、.jpgのような特定の種類のファイルを表示する機能を追加したいと思います。 png ... "

したがって、特定のファイルタイプをフィルタリングする場合は、RegexIteratorを使用できます。これは原則として.pngファイルに表示されています。

<?php 
     $Directory = new RecursiveDirectoryIterator("../"); 
     $Iterator = new RecursiveIteratorIterator($Directory); 
     // here the .png Match is set 
     $Regex = new RegexIterator($Iterator, '/^.+\.png$/i', RecursiveRegexIterator::GET_MATCH); 
     // the following part is only for the output of the resulting array $Regex in html 
     $output = "<table width='100%' align='center'><table width='50%' align='center'>"; 
     foreach($Regex as $key => $var) { 
        $output .= '<tr>'; 
        foreach($var as $col => $val) { 
         $output .= "<td style='font-size:14px;font-weight:bold;'>" . $col . '</td>'; 
        } 
        $output .= '</tr>'; 
        foreach($var as $col => $val) { 
         $output .= '<td>' . $val . '</td>'; 
        } 
        $output .= '</tr>'; 
       } 
     $output .= '</table></table>'; 
     echo $output; 
?> 
     <head> 
      <style type="text/css"> 
       table , tr , td { 
        font: arial; 
        font-size: 13px; 
        font-style: normal; 
        font-weight: normal; 
        border: 1px solid blue; 
        border-collapse: collapse; 
       } 
      </style> 
     </head> 

...など。当然のことながら、これは唯一の原則を示す荒い解決策です。

敬具 アクセルアーノルドBangert - Herzogenrathの2016

Test

関連する問題