|
Posted by Mr Phuzz on 10/01/06 22:56
Hello,
I'm pretty new to PHP and am wrestling with regexp's right now. I am
trying to figure something out with no luck. Hopefully someone can
help.
I am trying to filter out file names. I want to write a regexp that
matches all image file names, such as ".jpg", ".bmp", ".png", etc...
but not file names that end with "_thumb.***" (where *** is the
extension of the file name... which can be 3 or 4 chars long). So...
somepic.jpg <--- should match
somepic_thumb.jpg <--- should not match
anotherpic.png <--- should match
this_thumb.is_broken.jpg <--- should match
Currently, I do this using two regexps. First, I compare to determine
if the file is an image by looking at the end and seeing if it's .jpg,
..png, etc. If that passes, I compare again to see if it contains
"_thumb.***" at the end (allowing for 3 or 4 chars, such as jpg or
jpeg), as such:
if(preg_match("/(.jpg|.jpeg|.gif|.png|.bmp)$/i", $filename)){
if(!preg_match("/(_thumb.).{3,4}$/i", $filename)){
$files[]=$filename;
print("$filename<br>");
}
}
How can I, if possible, combine these into one regexp?
Thanks for your time,
Mr Phuzz
[Back to original message]
|