|
Posted by Steve on 11/16/07 18:05
"Tom Mackay" <nospam@nospam.com> wrote in message
news:13jrknk5st2n2a4@corp.supernews.com...
>
> "Steve" <no.one@example.com> wrote in message
> news:5fk%i.698$Xp7.594@newsfe05.lga...
>>
>> "Tom Mackay" <nospam@nospam.com> wrote in message
>> news:13jrjgd3uhctbff@corp.supernews.com...
>>>
>>> "Steve" <no.one@example.com> wrote in message
>>> news:PYj%i.693$Xp7.184@newsfe05.lga...
>>>>
>>>> "Tom Mackay" <nospam@nospam.com> wrote in message
>>>> news:13jri2nqr1phc22@corp.supernews.com...
>>>>>
>>>>> "Steve" <no.one@example.com> wrote in message
>>>>> news:Spj%i.25$ug7.5@newsfe02.lga...
>>>>>>
>>>>>> "Tom Mackay" <nospam@nospam.com> wrote in message
>>>>>> news:13jrfeiaa8dscca@corp.supernews.com...
>>>>>>> "Steve" <no.one@example.com> wrote in message
>>>>>>> news:uqY_i.7$dY3.2@newsfe02.lga...
>>>>>>>>
>>>>>>>> "Mike" <me@privacy.net> wrote in message
>>>>>>>> news:13jo2saj2oacnda@corp.supernews.com...
>>>>>>>>> Hi
>>>>>>>>>
>>>>>>>>> Does anyone use glob to search?. I am wondering how
>>>>>>>>> good/effective it
>>>>>>>>> is
>>>>>>>>>
>>>>>>>>> http://de3.php.net/manual/en/function.glob.php
>>>>>>>>
>>>>>>>> i've been using it for years in the form of:
>>>>>>>>
>>>>>>>>
>>>>>>>> function listFiles($path = '.', $extension = array(), $combine =
>>>>>>>> false)
>>>>>>>> {
>>>>>>>> $wd = getcwd();
>>>>>>>> $path .= substr($path, -1) != '/' ? '/' : '';
>>>>>>>> if (!chdir($path)){ return array(); }
>>>>>>>> if (!$extension){ $extension = array('*'); }
>>>>>>>> if (!is_array($extension)){ $extension = array($extension); }
>>>>>>>> $extensions = '*.{' . implode(',', $extension) . '}';
>>>>>>>> $files = glob($extensions, GLOB_BRACE);
>>>>>>>> chdir($wd);
>>>>>>>> if (!$files){ return array(); }
>>>>>>>> $list = array();
>>>>>>>> $path = $combine ? $path : '';
>>>>>>>> foreach ($files as $file)
>>>>>>>> {
>>>>>>>> $list[] = $path . $file;
>>>>>>>> }
>>>>>>>> return $list;
>>>>>>>> }
>>>>>>>>
>>>>>>>
>>>>>>> Hi
>>>>>>> I just tried your script but nothing happens. What is it supposed
>>>>>>> to do?
>>>>>>
>>>>>> list files in a directory...as in:
>>>>>>
>>>>>> ==============
>>>>>>
>>>>>> <?
>>>>>> function listFiles($path = '.', $extension = array(), $combine =
>>>>>> false)
>>>>>> {
>>>>>> $wd = getcwd();
>>>>>> $path .= substr($path, -1) != '/' ? '/' : '';
>>>>>> if (!chdir($path)){ return array(); }
>>>>>> if (!$extension){ $extension = array('*'); }
>>>>>> if (!is_array($extension)){ $extension = array($extension); }
>>>>>> $extensions = '*.{' . implode(',', $extension) . '}';
>>>>>> $files = glob($extensions, GLOB_BRACE);
>>>>>> chdir($wd);
>>>>>> if (!$files){ return array(); }
>>>>>> $list = array();
>>>>>> $path = $combine ? $path : '';
>>>>>> foreach ($files as $file)
>>>>>> {
>>>>>> $list[] = $path . $file;
>>>>>> }
>>>>>> return $list;
>>>>>> }
>>>>>> $files = listFiles('c:/inetpub/wwwroot/images', 'jpg', true);
>>>>>> $images = array();
>>>>>> foreach ($files as $file)
>>>>>> {
>>>>>> $fileInfo = pathinfo($file);
>>>>>> $handle = fopen($file, 'r');
>>>>>> $fileInfo = array_merge($fileInfo, fstat($handle));
>>>>>> fclose($handle);
>>>>>> for ($i = 0; $i < 13; $i++){ unset($fileInfo[$i]); }
>>>>>> echo '<pre>' . print_r($fileInfo, true) . '</pre>';
>>>>>> }
>>>>>> ?>
>>>>>>
>>>>>> ==============
>>>>>>
>>>>>> if you want to search for multiple extensions, then the listFiles arg
>>>>>> would be an array...as in:
>>>>>>
>>>>>> array('jpg', 'gif', 'tif')
>>>>>>
>>>>>> make sense?
>>>>>
>>>>>
>>>>> OK thanks.
>>>>> FYI I have a similar list script i have been using for a while but
>>>>> would like to replace this will a search instead of a full listing.
>>>>> i.e. - search for file xxxx rather than going through the list to see
>>>>> if
>>>>> it is present.
>>>>>
>>>>> <?php
>>>>> $path = "/usr/local/apache/share/default/";
>>>>> $dir_handle = @opendir($path) or die("Unable to open $path");
>>>>> while ($file = readdir($dir_handle)) {
>>>>> if($file == "." || $file == ".." || $file == "index.php" )
>>>>> continue;
>>>>> echo "<a href=\"$file\">$file</a><br />";
>>>>> }
>>>>> // Close
>>>>> closedir($dir_handle);
>>>>> ?>
>>>>>
>>>>> Any suggestions how to do this or point me in the right direction?.
>>>>
>>>> from you example above:
>>>>
>>>> $wd = getcwd();
>>>> chdir($path);
>>>> $files = glob('index.php');
>>>> chdir($wd);
>>>>
>>>> that's it.
>>>>
>>>> if you were so inclined, just modify my listFiles function at this
>>>> line:
>>>>
>>>> $extensions = '*.{' . implode(',', $extension) . '}';
>>>>
>>>> to:
>>>>
>>>> $extensions = '{' . implode(',', $extension) . '}';
>>>>
>>>> i'd also change the variable names to $find (was $extension) and
>>>> $search (was $extensions). the only other change you'd need to note is
>>>> when calling the function. if searching by extension, you'd have to
>>>> include the asterisk yourself...
>>>>
>>>> array('*.jpg', '*.png', 'index.php')
>>>>
>>>> for example. that should list all jpg and png images and any file named
>>>> index.php. see if that works for you.
>>>
>>>
>>> The extension is always the same so i dont have to worry about that. How
>>> would i include a search field into the script to allow me to enter the
>>> file names into the page directly.
>>> I am assuming this would be a normal form field?. i.e.
>>>
>>> <form name="form" method="post" action="">
>>> <label>search
>>> <input type="text" name="textfield">
>>> </label>
>>
>> not sure i've ever seen <label> tags before.
>>
>> anyway, yes, you could do it that way pretty easily. on the other side,
>> you would:
>>
>> $find = $_REQUEST['textfield'];
>>
>> and then do your search.
>>
>> btw, you didn't mention recursion in your search...as in, if there is a
>> sub directory in $path, do you search for $file in that sub dir?
>
>
>
> Yes would like to have the sub directories included.
> Thanks for the info above. I will have a read over what you have posted
> and will see if i can put it together and get it to work.
> I'm not as knowledgeable as you though so will probably take me a while :)
just look over the php functions used. the guts of it are here:
>>>> $wd = getcwd();
>>>> chdir($path);
>>>> $files = glob('index.php');
>>>> chdir($wd);
notice, i use GLOB_BRACE...look in the manual for why and you'll be golden.
as for directory recursion, let me know if you get stuck. is_dir() will help
as a hint...but you'll probably find many examples just by googling.
cheers.
Navigation:
[Reply to this message]
|