Re: newbie Q: How to say, "if the fileNAME is equal to...", or better yet, "if the fileNAME ends with '.jpg'"?

From: Date: Sun, 24 Aug 2008 23:11:04 +0000
Subject: Re: newbie Q: How to say, "if the fileNAME is equal to...", or better yet, "if the fileNAME ends with '.jpg'"?
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-278607@lists.php.net to get a copy of this message
Govinda schreef:
Hi all :-) It'll be fun to work here with you guys over the coming months.
fun? work? you must be new :-)
I have been out of the coding loop for 7 years, and I am totally new to PHP, but I should catch up not-too-slowly as I used to code HTML, WebDNA, and a little Visual Basic too. Kindly bear with me.
little bear or big bear? okay enough jokes (but now you know the list flavor at least)
First Q: This code does list the files in my dir just fine: $ThisDir = getcwd()."/thumbs"; $DirHandle = opendir($ThisDir); if ($DirHandle = opendir($ThisDir)) { echo "Directory handle: $DirHandle\n"; echo "Files:<br /><hr width=\"25\%\" align=\"left\" />"; while ((false !== ($file = readdir($DirHandle))) & 1) {
            echo "$file<br />";
    }
    closedir($DirHandle);
} But two of those entries are apparently named "." and "..".
they are quite common in most filesystem :-P
Feel free to enlighten me on that, but, always trying to be
like John Lennon said ... by heck you gotta save yourself (damn I said I'd stop with the jokes didn't I)
self-sufficient, I attempt to workaround by wrapping this line: echo "$file<br />"; with an if statement that I want to only show the file if it ends with the extension ".jpg". I haven't yet found the 'string.ends_with' function in the docs, so I am just seeing if I can (to learn step by step) instead wrap that echo line with an if statement that says "if the name of the file is equal to (xxxx.jpg)", like so: $ThisDir = getcwd()."/thumbs";
becareful with getcwd(), look into other methods of determining paths, e.g. dirname(__FILE__).
$DirHandle = opendir($ThisDir); if ($DirHandle = opendir($ThisDir)) { echo "Directory handle: $DirHandle\n"; echo "Files:<br /><hr width=\"25\%\" align=\"left\" />";
save yourself a million slashes: echo 'Files:<br /><hr width="25%" align="left" />'; double quotes interpolate variables, single quotes don't.
while ((false !== ($file = readdir($DirHandle))) & 1) {
        if (true == ($file="xxxx.jpg")) {
            echo "$file<br />";
this *could* be written as: echo $file, '<br />'; just a thought.
            }
    }
    closedir($DirHandle);
} But instead of printing only the name of the file which is equal to "xxxx.jpg", it seems to actually set the value of $file to "xxxx.jpg" on
use == to test equality, = is to set a variable.
each iteration of the while loop, so what I get is a list of files all having the same name ("xxxx.jpg") and their number is equal to the actual number of files in that dir (plus 2 - for the "." and ".." files).
there is is_dir() to check if it's a dir. but that's not what you want here. you could do something hackish like if (stripos(strrev($file), "gpj.") === 0) { echo $file; } note the ===, 3 equals signs here is very important! check the docs for why. or you could go a little more robust with regular expressions if (preg_match("#^.*\.(jpe?g|gif|png)$#i", $file) { echo $file; // any image file is echo'ed } if (preg_match("#^.*\.jpe?g$#i", $file) { echo $file; // any jpeg file is echo'ed }
How to say, "if the fileNAME is equal to...", or better yet, "if the fileNAME ends with '.jpg'"?
http://php.net/manual/en/ref.strings.php lists all the basic string funcs, have fun with inconsistent argument order in some of those! after 7+ years of php I still get the order wrong for some of them :-)
Thanks, -Govinda


« previous php.general (#278607) next »