Используйте
preg_match_all('/(\d{4})/', $text, $matches);
return $matches;
Нет необходимости использовать класс символов, если у вас есть только \d
для соответствия, кстати (я опускаю квадратные скобки).
Если вы хотите сопоставить 4-значное или 2-значное число, используйте
preg_match_all('/(?<!\d)(\d{4}|\d{2})(?!\d)/', $text, $matches);
return $matches;
Здесь я использую отрицательный взгляд за (?<!\d)
и отрицательный взгляд (?!\d)
, чтобы предотвратить сопоставление двухзначных частей трехзначных чисел (например, предотвратить сопоставление 123
как 12
).