PHP Unlink()可以基于模式删除多个文件吗?

时间:2019-03-10 02:53:46

标签: php unlink

我想知道unlink()函数是否可以基于某个模式删除多个文件:

<mat-table #table [dataSource]="dataSource">
  <ng-container matColumnDef="position">
    <mat-header-cell *matHeaderCellDef> No. </mat-header-cell>
    <mat-cell *matCellDef="let element">{{element.position}}</mat-cell>
  </ng-container>
  <ng-container matColumnDef="firstName">
    <mat-header-cell *matHeaderCellDef> First Name </mat-header-cell>
    <mat-cell *matCellDef="let element">{{element.firstName}}</mat-cell>
  </ng-container>
  <ng-container matColumnDef="lastName">
    <mat-header-cell *matHeaderCellDef> Last Name </mat-header-cell>
    <mat-cell *matCellDef="let element">{{element.lastName}}</mat-cell>
  </ng-container>
  <ng-container matColumnDef="email">
    <mat-header-cell *matHeaderCellDef> Email </mat-header-cell>
    <mat-cell *matCellDef="let element">{{element.email}}</mat-cell>
  </ng-container>
  <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
  <mat-row *matRowDef="let row; columns: displayedColumns;"></mat-row>
</mat-table>

是否存在不需要glob()和循环就可以删除多个文件(例如.txt文件)的东西?

2 个答案:

答案 0 :(得分:0)

documentation说,您只能传递单个文件,就像C的unlink一样。

答案 1 :(得分:0)

否,但这只有77个字节或69个单字母变量:

array_map('unlink',preg_filter('/^/',$dir,preg_grep($regex,scandir($dir))));
//array_map('unlink',preg_filter('/^/',$d,preg_grep($r,scandir($d))));

未经测试,应该在理论上起作用(也许)。 $dir是带有斜杠结尾的目录。 $regex是完整的正则表达式。

  

不需要glob()和循环

没有glob,没有循环。尽管我确实使用过array_map,但我没有关闭它。

用于测试:

$dir = 'somefolder/';

//scandir($dir)
$files = ['index.php', 'image.jpg', 'somefile.php'];

//look for files ending in .php
$regex = '/\.php$/';

//strval is useless here but, it shows it works, these are strings so it just returns what we already have
$files = array_map('strval', preg_filter('/^/', $dir, preg_grep($regex, $files)));

//I could have used 'print_r' instead of 'strval' but this is formatted better!
print_r($files);

输出

//these would be sent to unlink
Array
(
    [0] => somefolder/index.php
    [2] => somefolder/somefile.php
)

Sandbox

干杯!