krv
krv

Reputation: 2920

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?

Upvotes: 1

Views: 515

Answers (1)

Rizier123
Rizier123

Reputation: 59701

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>";

?>

Upvotes: 1

Related Questions