Php 从文件大小小于40kb的指定目录返回文件
我想选择文件格式目录,其中文件大小小于100kb。请检查我的代码,它不工作Php 从文件大小小于40kb的指定目录返回文件,php,filesize,glob,Php,Filesize,Glob,我想选择文件格式目录,其中文件大小小于100kb。请检查我的代码,它不工作 <?php ob_start(); $dir = '/home/couponsc/public_html/testfile'; $ext = '.mp3'; $search = $_GET['s']; $results = glob("$dir/*$search*$ext"); foreach($results as $item) { $sizes= filesize($item
<?php
ob_start();
$dir = '/home/couponsc/public_html/testfile';
$ext = '.mp3';
$search = $_GET['s'];
$results = glob("$dir/*$search*$ext");
foreach($results as $item)
{
$sizes= filesize($item);
if($sizes < 100);
{
echo $item;
}
}
?>
如果($size<100)代码>
if子句->空语句后有一个分号
foreach($results as $item) {
$sizes= filesize($item);
if($sizes < 40*1024) {
echo $item, "\n";
}
}
foreach($results as$item){
$sizes=文件大小($item);
如果($size<40*1024){
回显$item“\n”;
}
}
或者使用更多的/fun+递归:
<?php
$path = 'c:/temp';
$it = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($path),
RecursiveIteratorIterator::LEAVES_ONLY
);
$it = new FooFilterIterator($it, function($e) { return $e->getSize(); }, function($e) { return $e < 40*1024; } );
foreach($it as $f) {
printf("% 6d %s\n", $f->getSize(), $f);
}
class FooFilterIterator extends FilterIterator {
protected $getter;
protected $filter;
public function __construct(Iterator $source, $getter, $filter) {
parent::__construct($source);
$this->getter = $getter;
$this->filter = $filter;
}
public function accept() {
$f = $this->filter;
$g = $this->getter;
return $f( $g($this->current()) );
}
}
函数filesize()
返回字节,而不是千字节,因此您的条件不起作用
正确的条件是:
if($sizes < 102400);
if($size<102400);
filesize()
返回字节,而不是KB,您需要放入$size<100*1024
。添加此项后,它会显示小于或大于100KB的所有文件,所以它会显示所有文件?filesize($item)
是否返回false
?您可能需要在文件大小($dir./'.$item)
中将$dir
预先添加到$item
。我想删除所有文件大小等于44kbRight的文件,如果基本循环和文件大小查询正在工作,这就足够简单了,这就是您在代码中尝试实现的。它能用吗?回答得好,比我快!!我还打算建议进行RDI。是的,但这只是有趣的部分-需要更多的解释才能有所帮助;-)