Search code examples
phpfileglobscandir

scandir() display file found/not found error messge


I have 100 files and I am scanning them and picking the correct file out of them.

I am using the following code:

 $dir    = 'myDir';
 $files1 = scandir($dir);

 $scanned_directory = array_diff($files1, array('..', '.'));


 foreach ($scanned_directory as $key => $value) {
    $onlyname=explode(".", $value);
    if($onlyname[0]== $name){
        // echo "file found";
        break;
    }else{
        //echo "<h2>Not Found. Please Try Later</h2>";
    }

 }

The problem with this is that if the file is the 10th file I get 9x not found, before I get the file found message.

What is the proper way to display error message if no file is found?


Solution

  • I simplified your code a bit.

    First of all I get all files from your directory into an array with glob(). Then I simply grab all files which have the name $name with preg_grep() and check with count() if there is at least 1 file with that specific name.

    <?php
    
        $dir = "myDir";
        $files = glob($dir . "/*.*");
    
        if(count(preg_grep("/^$name\..*$/", array_map("basename", $files))) > 0)
            echo "file found";
        else
            echo "<h2>Not Found. Please Try Later</h2>";
    
    ?>