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)){
Du willst $var_123 finden und $var_124_1
Also deinen ersten Ausdruck gefolgt von der ergänzung, aber optional: du suchst "?" sowie subpatterns
#(x(?:y)?)#
ist nicht zielführend in diesem Fall.
Allenfalls brauchst du negative lookaheadsm was das Ganze aber komplexer macht.
Dein Rezept trifft nur zu wenn dieser Fall zutrifft:
#(x(?:y)?)z#
Aber Umstellen ist einfacher
#(xy|x)#
mfg Beat
--
><o(((°> ><o(((°>
<°)))o>< ><o(((°>o
Der Valigator leibt diese Fische
><o(((°> ><o(((°>
<°)))o>< ><o(((°>o
Der Valigator leibt diese Fische