Greetings,
I am working on a little script that will start at a specified
directory on my web server and then proceed to look through all files
and sub-folders for an instance of text located in a file. (This is
a follow-up of sorts to a previous post of mine from a week or two ago.)
I got the code to work fine for searching through one directory.
However, my thought was that in order to drill down through an
undefined number of sub-folders I would need to implement a recursive
function. The recursive "depth first" search function I made is not
working as expected and so far I haven't been able to figure out what
or how I need to tweak it.
I'm completely squeezed for time at work so I'll continue to bang
away at it but I thought I would post it here in the hopes that some
of our rockets scientists can show me the error of my ways. I'm
guessing this will be a rather simple problem for some folks on the
list.
So here goes. Listed below are my algorithm and code. I'm looking
forward to finding out where I'm going wrong. =)
My algorithm:
1) Set the directory that the script will start in.
2) Open that directory and read all files and folders in that directory.
3) While each item is being read, check it. If the item is a
directory, call the recursive search in order to drill down further.
If the item is a file, open the file and search for the text string
that I am trying to locate.
My code (with comments):
<?php
$path='/home/usr/account';
search($path);
function search($path)
{
$dir=opendir($path);
// browse all files and folders in the current directory
while (false !== ($item=readdir($dir))) {
// if the item is a directory, drill down using a recursive call to
the search function
if (is_dir($item) && $item !='.' && $item!='..') {
search($path . '/' . $item);
}
if (is_file($item)) {
$file=file($item);
$lines=count($file);
for ($i=0; $i<$lines; $i++) {
if (strstr(($file[$i]), 'text to search for')) {
echo 'Search string found on line ' . $i . ' in file ' . $path .
'/' . $item . '<br />';
}
}
}
}
closedir($dir);
}
?>
Cheers,
-Aaron
_______________________________________________
New York PHP Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk
NYPHPCon 2006 Presentations Online
http://www.nyphpcon.com
Show Your Participation in New York PHP
http://www.nyphp.org/show_participation.php