0

ファイルサイズが 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);
        if($sizes < 100);
        {               
            echo $item;             
        }

    }   



?>
4

2 に答える 2

1

if($sizes < 100); if-clause -> empty ステートメントの後にセミコロンがあります。

foreach($results as $item) {
    $sizes= filesize($item);
    if($sizes < 40*1024) {
        echo $item, "\n";
    }
} 

または、もう少しspl / lambda fun + recursionを使用します。

<?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()) );
    }
}

GlobIteratorもあります。

于 2012-09-13T14:29:15.153 に答える
0

このfilesize()関数はキロバイトではなくバイトを返すため、条件は機能しません。

正しい条件は次のとおりです。

if($sizes < 102400);
于 2012-09-13T14:34:07.793 に答える