if (preg_match_all('#$var_[0-9]{1,3}#', $string, $contents)){
if (preg_match_all('#$var_[0-9]{1,3}_[0-9]{1}#', $string, $contents)){
Was mache ich falsch?
DU machst einen logischen Fehler ;)
Du willst $var_123 finden und $var_124_1
Also deinen ersten Ausdruck gefolgt von der ergänzung, aber optional: du suchst "?" sowie subpatterns
\d entspricht übrigens [0-9]