Re: Does anyone use Glob?




"Tom Mackay" <nospam@xxxxxxxxxx> wrote in message
news:13jrknk5st2n2a4@xxxxxxxxxxxxxxxxxxxxx

"Steve" <no.one@xxxxxxxxxxx> wrote in message
news:5fk%i.698$Xp7.594@xxxxxxxxxxxxxxx

"Tom Mackay" <nospam@xxxxxxxxxx> wrote in message
news:13jrjgd3uhctbff@xxxxxxxxxxxxxxxxxxxxx

"Steve" <no.one@xxxxxxxxxxx> wrote in message
news:PYj%i.693$Xp7.184@xxxxxxxxxxxxxxx

"Tom Mackay" <nospam@xxxxxxxxxx> wrote in message
news:13jri2nqr1phc22@xxxxxxxxxxxxxxxxxxxxx

"Steve" <no.one@xxxxxxxxxxx> wrote in message
news:Spj%i.25$ug7.5@xxxxxxxxxxxxxxx

"Tom Mackay" <nospam@xxxxxxxxxx> wrote in message
news:13jrfeiaa8dscca@xxxxxxxxxxxxxxxxxxxxx
"Steve" <no.one@xxxxxxxxxxx> wrote in message
news:uqY_i.7$dY3.2@xxxxxxxxxxxxxxx

"Mike" <me@xxxxxxxxxxx> wrote in message
news:13jo2saj2oacnda@xxxxxxxxxxxxxxxxxxxxx
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.


.



Relevant Pages

  • Re: Does anyone use Glob?
    ... if {return array();} ... I just tried your script but nothing happens. ... if you want to search for multiple extensions, ... sub directory in $path, do you search for $file in that sub dir? ...
    (alt.php)
  • Re: Logon script - function array and select case not working
    ... this all works well, except, the function i am using for the rules in the control script causes alot of querrys to AD. as there are alot of groups. ... objTSout.writeline retrv ... So if you think that this will assign an array value to the variable, how do you think the case select statement is going go compare this array value with the literal string values such as "group name here"? ... However, by not assigning ANY value to checkgrp in the function, you are guaranteeing that, should the function ever exit, it will return no information. ...
    (microsoft.public.scripting.vbscript)
  • Re: string retrieval issue
    ... Chicago Bears|NFC North ... not writing the third element back to the array). ... You didn't include it in your script. ... Fear is the mind-killer. ...
    (comp.lang.perl.misc)
  • Re: even rows for checkbox forms with no splitting of boxes from values
    ... 'mod' on the array length with a denominator equal to the width of the row, ... State saving really depends on what the script is already doing. ... So I usually roll my own checkboxes. ... #this is to create an array with 25-50 strings 2-10 in length ...
    (comp.infosystems.www.authoring.cgi)
  • Re: settimeout needs alert() ???
    ... function slider { ... and use script to replace the src and title attributes. ... are downloaded completely. ... The usual strategy is to load all of the images in to an array of image ...
    (comp.lang.javascript)