Ich habe es so versucht:
if (preg_match_all('#($var_[0-9]{1,3})|($var_[0-9]{1,3}_[0-9]{1})#', $string, $contents)){
Die Ausgabe mit print_r($contents) bringt mir immer nur die Werte von der ersten Abfrage dafür aber doppelt.
Was mache ich falsch?
Es wird immer nach der ersten Möglichkeit in einem (|) gesucht, nis diese versagt. Die versagt hier aber nicht.
Du musst deshalb die Reihenfolge umstellen.
#$var_(\d{1,3}_\d|\d{1,3})#
Versagt die erste Variante, wird die zweite verwendet.
mfg Beat