• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 266
  • Last Modified:

PHP Code to Search Files in a Folder

Hello,

I'm looking for a PHP code which enables me search files in a folder.

For example I have two folders say Docs & Music. Now I search for a keyword say 'John', then the script would be able to search that John keyword from both folders.


Thanks in Advance
0
Andy1988
Asked:
Andy1988
  • 6
  • 6
  • 2
  • +2
1 Solution
 
MushqCommented:
For more details please check.
http://www.phpjabbers.com/ask91-read-files-name-in-folder-using-php.html

Best Regards,
Mushi
<?php
$dir = ".";
 
$dh = opendir($dir);
 
while (($file = readdir($dh)) !== false) {
echo $file;
}
 
closedir($dh);
?> 

Open in new window

0
 
drakesheCommented:
Here you go.
<?php
	$find = "john";
	if ($handle = opendir('/path/to/files')) {
	    while ($file = readdir($handle)) {
        echo "$file\n";
		if(strstr($file, $find){
			echo("Found file containing ".$find);
			echo($file);
		}
    }
    closedir($handle);
?>

Open in new window

0
 
shobinsunCommented:
Hi,

Look at theese:

http://in2.php.net/readdir

This will help you.

Regards
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
shobinsunCommented:
0
 
Andy1988Author Commented:
Well, I guess you got me wrong. I want a code to search file not to list the file:

A search box with a button and the code can show the results of the keyword which has been entered in the searchbox.
0
 
Andy1988Author Commented:
@drakeshe: I'm getting this error in the code:
Parse error: syntax error, unexpected '{' in /home/webinco/public_html/demo/search.php on line 6

Open in new window

0
 
drakesheCommented:
Fixed
<?php
	$find = "john";
	if ($handle = opendir('/path/to/files')) {
		while ($file = readdir($handle)) {
			if(strstr($file, $find)){
					echo("Found file containing ".$find);
					echo($file);
			}
		}
	}
    closedir($handle);
?>

Open in new window

0
 
drakesheCommented:
Edit:

<?php
	$find = "jogn";
	if ($handle = opendir('music/')) {
		while ($file = readdir($handle)) {
			if(strstr($file, $find)){
				echo("Found file containing ".$find."<BR>");
				echo($file);
			}
		}
	}
    closedir($handle);
?>

Open in new window

0
 
Andy1988Author Commented:
Okay this script works for me: now please tell me how can I make it a search landing page?

I mean what should I do to work this code with search page/field?
0
 
ycTINCommented:
FYI
http://php.net/glob
<?php
$find = "test";
$dir = "/Doc/"; // 
 
foreach (glob("$dir*$find*") as $filename) {
    echo "$filename, size " . filesize($filename) . "\n";
}
?>

Open in new window

0
 
drakesheCommented:
I better get A++ =P


<?php
	$submitted = @$_POST['submit'];
	if ($submitted != '') {
		$find = $_POST['keyword'];
		if ($handle = opendir('images/')) {
			while ($file = readdir($handle)) {
				if(strstr($file, $find)){
					echo("Found file containing ".$find."<BR>");
					echo($file);
				}
			}
		}
		closedir($handle);
	}
?>
<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
	<table width="auto" border="0">
		<tr>
			<td colspan="3"><strong>Find Song: </strong></td>
		</tr>
		<tr>
			<td height="25">Song Name Part:</td>
			<td><label><input name="keyword" type="text" size="39"></label></td>
			<td>eg. John</td>
		</tr>	
		<tr>
		    <td height="25"><label><input type="submit" name="submit" value="Find!" /></label></td>
		    <td>&nbsp;</td>
		</tr>
	</table>
</form>

Open in new window

0
 
drakesheCommented:
Using ycTIN's method:
<?php
	$submitted = @$_POST['submit'];
	if ($submitted != '') {
		$find = $_POST['keyword'];
		$find = $_POST['keyword'];
		$dir = "/Doc/";	
		foreach (glob("$dir*$find*") as $filename) {
			echo("Found file containing ".$find."<BR>");
			echo($filename."<BR>");
		}
		closedir($handle);
	}
?>
<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
	<table width="auto" border="0">
		<tr>
			<td colspan="3"><strong>Find Song: </strong></td>
		</tr>
		<tr>
			<td height="25">Song Name Part:</td>
			<td><label><input name="keyword" type="text" size="39"></label></td>
			<td>eg. John</td>
		</tr>	
		<tr>
		    <td height="25"><label><input type="submit" name="submit" value="Find!" /></label></td>
		    <td>&nbsp;</td>
		</tr>
	</table>
</form>

Open in new window

0
 
Andy1988Author Commented:
Thanks, you'd definitely get A++ :D

Btw, what code should I add to show file not found if the file is not there. :)

Sorry but I don't have knowledge about PHP :(
0
 
drakesheCommented:
Added "No files found"
<?php
	$submitted = @$_POST['submit'];
	if ($submitted != '') {
		$find = $_POST['keyword'];
		$dir = "images/";	
		$found = false;
		foreach (glob("$dir*$find*") as $filename) {
			echo("Found file containing ".$find."<BR>");
			echo($filename."<BR>");
			$found = true;
		}
		if($found == false){
			echo("No Files have been found");
		}
	}
?>
<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
	<table width="auto" border="0">
		<tr>
			<td colspan="3"><strong>Find Song: </strong></td>
		</tr>
		<tr>
			<td height="25">Song Name Part:</td>
			<td><label><input name="keyword" type="text" size="39"></label></td>
			<td>eg. John</td>
		</tr>	
		<tr>
		    <td height="25"><label><input type="submit" name="submit" value="Find!" /></label></td>
		    <td>&nbsp;</td>
		</tr>
	</table>
</form>

Open in new window

0
 
Andy1988Author Commented:
Nice,

Its working now.

However I applied this code to the code that you had given me earlier:
<?php
        $submitted = @$_POST['submit'];
        if ($submitted != '') {
                $find = $_POST['keyword'];
                $found = false;
                if ($handle = opendir('.')) {
                        while ($file = readdir($handle)) {
                                if(strstr($file, $find)){
                                        echo("Found file containing ".$find."<BR>");
                                        echo($file);
                                        $found = true;
                                }
                                }
                                if($found == false){
                        echo("No Files have been found");
                       }
                }
                closedir($handle);
        }
?>
<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
        <table width="auto" border="0">
                <tr>
                        <td colspan="3"><strong>Find Song: </strong></td>
                </tr>
                <tr>
                        <td height="25">Song Name Part:</td>
                        <td><label><input name="keyword" type="text" size="39"></label></td>
                        <td>eg. John</td>
                </tr>   
                <tr>
                    <td height="25"><label><input type="submit" name="submit" value="Find!" /></label></td>
                    <td> </td>
                </tr>
        </table>
</form>

Open in new window

0
 
Andy1988Author Commented:
Thanks for the quick help.
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

  • 6
  • 6
  • 2
  • +2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now