| 
	
 | 
 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 :)
 
  
Navigation:
[Reply to this message] 
 |