RE: Re: [PHP] file_exists and wildcard/regex

2008-12-10 Thread Boyd, Todd M.
 -Original Message-
 From: Per Jessen [mailto:[EMAIL PROTECTED]
 Sent: Wednesday, December 10, 2008 1:43 AM
 To: php-general@lists.php.net
 Subject: Re: [PHP] file_exists and wildcard/regex
 
 Ashley Sheridan wrote:
 
  If you're on a Linux system, you could look at ls and the regular
  expressions it lets you use with it. You could exec out and get the
  returned results. Also, as it's a system call, it should be very
  speedy.
 
 'ls' is just a plain binary (/bin/ls), not a system call.  The regex
 functionality is part of the shell, usually bash.

I think the fact that you have to exec() in order to perform it disqualifies it 
from being a system call.

Ash - a system call is a mechanism for software to request a particular kernel 
service. There's a somewhat-outdated list from Linux kernel 2.2 at [1]. You 
might be able to get crafty with sys_*stat, but I wouldn't recommend it. ;)

FWIW, I would probably do the file search like this (UNTESTED):

?php

$filereg = '/bfile[1-9]?\d+\.txt/i';
$pathstr = '/whatever/your/path/is';

if(is_dir($pathstr)) {
if($dir = opendir($pathstr)) {
$found = false;

while(($file = readdir($dir)) !== false  !$found) {
if(preg_match($filereg, $file)  0) {
echo $file . 'br /';
$found = true;
}
}

closedir($dir);
}
}

?

If you want back more than the first match, do away with the $found -related 
stuff.

1. http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html

HTH,


// Todd


RE: Re: [PHP] file_exists and wildcard/regex

2008-12-10 Thread Boyd, Todd M.
 -Original Message-
 From: Boyd, Todd M. [mailto:[EMAIL PROTECTED]
 Sent: Wednesday, December 10, 2008 8:28 AM
 To: php-general@lists.php.net
 Subject: RE: Re: [PHP] file_exists and wildcard/regex
 
 FWIW, I would probably do the file search like this (UNTESTED):
 
 ?php
 
 $filereg = '/bfile[1-9]?\d+\.txt/i';

Erp. I meant '/bfile[1-9]?\d\.txt/i', with no '+' after the '\d'... assuming 
you want 0-99 to be the range of values.

 $pathstr = '/whatever/your/path/is';
 
 if(is_dir($pathstr)) {
   if($dir = opendir($pathstr)) {
   $found = false;
 
   while(($file = readdir($dir)) !== false  !$found) {
   if(preg_match($filereg, $file)  0) {
   echo $file . 'br /';
   $found = true;
   }
   }
 
   closedir($dir);
   }
 }
 
 ?


// Todd


Re: [PHP] file_exists and wildcard/regex

2008-12-09 Thread Stut

On 9 Dec 2008, at 22:26, Daniel Kolbo wrote:
What is the preferred method with php to test and see if a file  
[pattern] exists?


For example, i only need to search in one directory, that may have  
any number of files named such as afile1.txt, afile2.txt,  
afile3.txt,   And also, bfile1.txt, bfile2.txt, bfile3.txt, ...
I want to see if any such file 'family' exists.  That is, i want to  
see if there is any file named bfile[1-9][0-9]+.txt.  I don't care  
which bfile number exists, i just want to know if any bfile exists.


I hope this is clear enough, if not let me know.


Use glob (http://php.net/glob) and get the size of the array returned.  
Note that if there could be thousands of matching files you may want  
to use opendir and readdir to look for matches instead.


-Stut

--
http://stut.net/

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] file_exists and wildcard/regex

2008-12-09 Thread Daniel Kolbo



Daniel Kolbo wrote:
What is the preferred method with php to test and see if a file 
[pattern] exists?


For example, i only need to search in one directory, that may have any 
number of files named such as afile1.txt, afile2.txt, afile3.txt, 
  And also, bfile1.txt, bfile2.txt, bfile3.txt, ...
I want to see if any such file 'family' exists.  That is, i want to 
see if there is any file named bfile[1-9][0-9]+.txt.  I don't care 
which bfile number exists, i just want to know if any bfile exists.


I hope this is clear enough, if not let me know.

thanks,
dK


After some more research it seems my options are:
1) loop through the directory contents
2) use scandir (then search the resulting array)
3) use glob.  I am not familiar with the glob pattern library, it does 
not seem like i have the full power of regex when using glob is this 
correct?  Also, searching the whole filesystem seems...overkill.


What do you suggest, is there a 4th option?
thanks,
dK


Re: [PHP] file_exists and wildcard/regex

2008-12-09 Thread Ashley Sheridan
On Tue, 2008-12-09 at 12:54 -1000, Daniel Kolbo wrote:
 
 Daniel Kolbo wrote:
  What is the preferred method with php to test and see if a file 
  [pattern] exists?
 
  For example, i only need to search in one directory, that may have any 
  number of files named such as afile1.txt, afile2.txt, afile3.txt, 
    And also, bfile1.txt, bfile2.txt, bfile3.txt, ...
  I want to see if any such file 'family' exists.  That is, i want to 
  see if there is any file named bfile[1-9][0-9]+.txt.  I don't care 
  which bfile number exists, i just want to know if any bfile exists.
 
  I hope this is clear enough, if not let me know.
 
  thanks,
  dK
 
 After some more research it seems my options are:
 1) loop through the directory contents
 2) use scandir (then search the resulting array)
 3) use glob.  I am not familiar with the glob pattern library, it does 
 not seem like i have the full power of regex when using glob is this 
 correct?  Also, searching the whole filesystem seems...overkill.
 
 What do you suggest, is there a 4th option?
 thanks,
 dK
If you're on a Linux system, you could look at ls and the regular
expressions it lets you use with it. You could exec out and get the
returned results. Also, as it's a system call, it should be very speedy.


Ash
www.ashleysheridan.co.uk


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] file_exists and wildcard/regex

2008-12-09 Thread ceo

I'm not sure how glob works in the guts, but I know it is dog-slow for large 
numbers of files (or maybe just large numbers of results).

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] file_exists and wildcard/regex

2008-12-09 Thread Per Jessen
[EMAIL PROTECTED] wrote:

 
 I'm not sure how glob works in the guts, but I know it is dog-slow for
 large numbers of files (or maybe just large numbers of results).
 

I'm not sure what the context of this was, but the speed of searching a
directory with a large number of files, e.g. 100,000s, also depends a
lot on the filesystem. 


/Per Jessen, Zürich


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] file_exists and wildcard/regex

2008-12-09 Thread Per Jessen
Ashley Sheridan wrote:

 If you're on a Linux system, you could look at ls and the regular
 expressions it lets you use with it. You could exec out and get the
 returned results. Also, as it's a system call, it should be very
 speedy.

'ls' is just a plain binary (/bin/ls), not a system call.  The regex
functionality is part of the shell, usually bash.


/Per Jessen, Zürich


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php