Если число равно всегда в конце, может быть быстрее использовать explode
, чтобы разделить имя на подчеркивания, взять последний элемент из списка и убрать ".ext».Как:
<?php
$file = 'whatever_files_123456.ext';
$split_up = explode('_', $file);
$last_item = $split_up[count($split_up)-1];
$number = substr($last_item, 0, -4);
Но, если вы действительно хотите использовать preg_match, это поможет:
<?php
$file = 'whatever_files_123456.ext';
$regex = '/_(\d+).ext/';
$items = array();
$matched = preg_match($regex, $file, $items);
$number = '';
if($matched) $number = $items[1];