RE: Re: [PHP] file_exists and wildcard/regex
-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
-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
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
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
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
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
[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
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