penso sia più corretto così...

Codice PHP:
<?php
$x 
"123";
$c "cat1";
$s "subcat1";

foreach(
glob("./cartella/*.jpg") as $file)
  {
  if( 
eregi("^{$x}_(.*)_{$c}_{$s}"basename($file,'.jpg')) )   echo "il file $file corrisponde
"
;
  else                                                                            echo 
"il file $file [b]NON[/b] corrisponde";
  }
?>