Solved

PHP Code to Search Files in a Folder

Posted on 2009-05-06
16
259 Views
Last Modified: 2012-06-21
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
Comment
Question by:Andy1988
  • 6
  • 6
  • 2
  • +2
16 Comments
 
LVL 6

Expert Comment

by:Mushq
ID: 24322709
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
 
LVL 5

Expert Comment

by:drakeshe
ID: 24322718
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
 
LVL 14

Expert Comment

by:shobinsun
ID: 24322762
Hi,

Look at theese:

http://in2.php.net/readdir

This will help you.

Regards
0
 
LVL 14

Expert Comment

by:shobinsun
ID: 24322777
0
 
LVL 4

Author Comment

by:Andy1988
ID: 24322891
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
 
LVL 4

Author Comment

by:Andy1988
ID: 24322923
@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
 
LVL 5

Expert Comment

by:drakeshe
ID: 24322989
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
 
LVL 5

Expert Comment

by:drakeshe
ID: 24323002
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
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 4

Author Comment

by:Andy1988
ID: 24323011
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
 
LVL 7

Expert Comment

by:ycTIN
ID: 24323023
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
 
LVL 5

Expert Comment

by:drakeshe
ID: 24323041
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
 
LVL 5

Expert Comment

by:drakeshe
ID: 24323061
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
 
LVL 4

Author Comment

by:Andy1988
ID: 24323105
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
 
LVL 5

Accepted Solution

by:
drakeshe earned 500 total points
ID: 24323118
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
 
LVL 4

Author Comment

by:Andy1988
ID: 24323252
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
 
LVL 4

Author Closing Comment

by:Andy1988
ID: 31578873
Thanks for the quick help.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
php ssh2_scp_send 1 47
.php tree directory? 5 55
Making register page log you in after registration is complete. 2 13
Intermittent Error on Page Loading 4 13
I imagine that there are some, like me, who require a way of getting currency exchange rates for implementation in web project from time to time, so I thought I would share a solution that I have developed for this purpose. It turns out that Yaho…
Introduction This article is intended for those who are new to PHP error handling (https://www.experts-exchange.com/articles/11769/And-by-the-way-I-am-New-to-PHP.html).  It addresses one of the most common problems that plague beginning PHP develop…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.

912 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now