0

あるディレクトリから別のディレクトリにファイルをコピーするためのこのPHPコードがあり、それは素晴らしい動作をしますが、文字「AUW」(引用符を除く)で終わるファイルのみをコピーするにはどうすればよいですか?ファイルは拡張子がないため、実際にはAUWという文字で終わることに注意してください。

また、コピーした後、ファイルをソースフォルダから削除したくありません。

// Get array of all source files
$files = scandir("sourcefolder");
// Identify directories
$source = "sourcefolder/";
$destination = "destinationfolder/";
// Cycle through all source files
foreach ($files as $file) {
  if (in_array($file, array(".",".."))) continue;
  // If we copied this successfully, mark it for deletion
  if (copy($source.$file, $destination.$file)) {
    $delete[] = $source.$file;
  }
}
// Delete all successfully-copied files
foreach ($delete as $file) {
  unlink($file);
}
4

5 に答える 5

2

関数globを使用できます。

foreach (glob("*AUW") as $filename) {
   // do the work...
}
于 2012-07-26T14:35:27.717 に答える
2
foreach ($files as $file) {
  if (in_array($file, array(".",".."))) continue;
  if (!endsWith($file, "AUW")) continue;
  // If we copied this successfully, mark it for deletion
  if (copy($source.$file, $destination.$file)) {
    // comment the following line will not add the files to the delete array and they will
    // not be deleted
    // $delete[] = $source.$file;
  }
}

// comment the followig line of code since we dont want to delete
// anything
// foreach ($delete as $file) {
//   unlink($file);
// }

function endsWith($haystack, $needle)
{
    $length = strlen($needle);
    if ($length == 0) return true;

    return (substr($haystack, -$length) === $needle);
}
于 2012-07-26T14:38:11.527 に答える
1

glob関数を使用したい。

foreach( glob( "*.AUW" ) as $filename )
{
      echo $filename;
}

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

于 2012-07-26T14:35:47.713 に答える
1

substr()メソッドを使用して、ファイル名の最後の3文字を取得します。これにより、論理比較で使用できる文字列が返されます。

if( substr( $file, -3 ) == 'AUW' )
{
  // Process files according to your exception.
}
else
{
  // If we copied this successfully, mark it for deletion
  if (copy($source.$file, $destination.$file)) {
    $delete[] = $source.$file;
}
于 2012-07-26T14:39:21.583 に答える
0

Google検索は難しすぎますか?ヒントを示します-substr()最後の3文字が「AUW」であるかどうかを確認するために使用します

AH

于 2012-07-26T14:34:52.030 に答える