3

内部に多くのファイルを含むディレクトリがあります。

pic_1_79879879879879879.jpg
pic_1_89798798789798789.jpg
pic_1_45646545646545646.jpg
pic_2_12345678213145646.jpg
pic_3_78974565646465645.jpg
etc...

pic_1_ ファイルのみを一覧表示する必要があります。どうすればいいですか?前もって感謝します。

4

5 に答える 5

9

glob()関数を使用する

foreach (glob("directory/pic_1_*") as $filename) {
  echo "$filename";
}

directoryglob 呼び出しを適切なパスに変更するだけです。

これは、ファイルのリストを取得してからフィルタリングするのではなく、すべてを 1 回のショットで実行します。

于 2011-05-11T05:15:19.097 に答える
4

opend dir 関数が役立ちます

$dir ="your path here";

$filetoread ="pic_1_";
    if (is_dir($dir)) {
        if ($dh = opendir($dir)) {
            while (($file = readdir($dh)) !== false) {
               if (strpos($file,$filetoread) !== false)
                echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
            }
            closedir($dh);
        }
    }

頑張ってphp.net opendirを見てください

于 2011-05-11T05:16:31.217 に答える
4

これがglob()の目的です。

glob — パターンに一致するパス名を見つける

例:

foreach (glob("pic_1*.jpg") as $file)
{
    echo $file;
}
于 2011-05-11T05:17:39.063 に答える
1

scandirディレクトリ内のすべてのファイルをリストするために使用しpreg_grepてから、探しているパターンに一致するファイルのリストを取得するために使用します。

于 2011-05-11T05:13:22.880 に答える
1

これはマニュアルのサンプルの 1 つです。

http://nz.php.net/manual/en/function.readdir.php

<?php
if ($handle = opendir('.')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            echo "$file\n";
        }
    }
    closedir($handle);
}
?>

そのコードを変更して、ファイル名をテストして、次のようなものを使用して pic_1_ で始まるかどうかを確認できます

if (substr($file, 0, 6) == 'pic_1_')

substr のマニュアル参照

http://nz.php.net/manual/en/function.substr.php

于 2011-05-11T05:16:08.440 に答える