|
Posted by Tom Mackay on 11/16/07 17:27
"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 :)
[Back to original message]
|