1

PHPを使用して特定のファイルのみを保持し、ディレクトリ内の他のファイルを削除するには?

例:
1/1.png, 1/2.jpeg, 1/5.png ...

ファイル番号、ファイル タイプは x.png や x.jpeg のようにランダムですが2.jpeg、ファイルに保持する必要がある文字列があります。

これを行う方法はありますか??

返信ありがとうございます。以下のようにコーディングしていますが、リンク解除機能が機能していないようです。何も削除しません。設定を変更する必要がありますか? マンプ使ってる

アップデート

// explode string <img src="u_img_p/5/x.png">
$content_p_img_arr = explode('u_img_p/', $content_p_img);
$content_p_img_arr_1 = explode('"', $content_p_img_arr[1]);    // get 5/2.png">
$content_p_img_arr_2 = explode('/', $content_p_img_arr_1[0]);    // get 5/2.png
print $content_p_img_arr_2[1];    // get 2.png   < the file need to keep

$dir = "u_img_p/".$id;  
if ($opendir = opendir($dir)){
    print $dir;
    while(($file = readdir($opendir))!= FALSE )
        if($file!="." && $file!= ".." && $file!= $content_p_img_arr_2[1]){
            unlink($file);
            print "unlink";
            print $file;
        }
    }
} 

コードのリンク解除パスをフォルダーに変更すると、機能します!!

 unlink("u_img_p/".$id.'/'.$file);  
4

4 に答える 4

2

http://php.net/manual/en/function.scandir.php

これにより、ディレクトリ内のすべてのファイルが配列に取得され、配列で foreach() を実行して、各ファイルでパターン/一致を探すことができます。

unlink() を使用してファイルを削除できます。

$dir = "/pathto/files/"
$exclude[] = "2.jpeg";
foreach(scandir($dir) as $file) {
 if (!in_array($file, $exclude)) {
  unlink("$dir/$file");
 }
}

シンプルで要点。複数のファイルを$exclude配列に追加できます。

于 2013-07-25T03:08:32.403 に答える
0
function remove_files( $folder_path , $aexcludefiles )
{
    if (is_dir($folder_path))
    {
        if ($dh = opendir($folder_path))
        {
            while (($file = readdir($dh)) !== false)
            {
                if( $file == '.' || $file == '..' )
                    continue ;

                if( in_array( $file , $aexcludefiles ) )
                    continue ;

                $file_path = $folder_path."/".$file ;
                if( is_link( $file_path ) )
                    continue ;

                unlink( $file_path ) ;
            }

            closedir($dh);
        }
    }
}


$aexcludefiles = array( "2.jpeg" )
remove_files( "1" , $aexcludefiles ) ;
于 2013-07-25T03:13:07.633 に答える
0
 $dir = "your_folder_path";  
 if ($opendir = opendir($dir)){
    //read directory
     while(($file = readdir($opendir))!= FALSE ){
      if($file!="." && $file!= ".." && $file!= "2.jpg"){
       unlink($file);
      }
     }
   } 
于 2013-07-25T03:09:29.320 に答える