Если я правильно понимаю, что вы спрашиваете правильно, вы хотели бы получить каждое число из этих значений отдельно? Это работает для меня:
$input = "Hardings Catering Services Handicap (Div I) Cl6 5f213y";
preg_match_all('/((\d+)(m|f|y))/', $input, $matches);
После выполнения preg_match_all()
, $matches[2]
содержит массив совпадающих чисел (в этом случае $matches[2][0]
равно 5, а $matches[2][1]
равно 213.
Если существуют все три значения, m будет в $matches[2][0]
, f в $matches[2][1]
и y в $matches[2][2]
. Если какие-либо значения отсутствуют, следующее значение будет увеличено. Также может пригодиться, что $matches[3]
будет содержать массив соответствующей совпавшей буквы, поэтому, если вам нужно проверить, было ли это m, f или y, вы можете.
Если это не то, что вам нужно, приведите пример вывода, который вы хотели бы видеть для этого или другого примера ввода.