Регулярные выражение для параметров шин и дисков

Помогите пожалуйста составить регулярные выражение для получения параметров шин/дисков.

Для шин необходимо из строки 245/45 R18 , получить 245 , 45 , 18.

Для дисков из строки 8 x 18 ET49 , получить 8, 18, 49


Ответы (4 шт):

Автор решения: gil9red

Думаю, должно получиться так:

preg_match('/(\d+)/(\d+) R(\d+)/', '245/45 R18', $matches);
print_r($matches);

и так:

preg_match('/(\d+) x (\d+) ET(\d+)/', '8 x 18 ET49', $matches);
print_r($matches);
→ Ссылка
Автор решения: Akina

/^(\d+)\D+(\d+)\D+(\d+)$/\1 \2 \3/gm

fiddle

→ Ссылка
Автор решения: PotroNik

UPD: прочитал комментарий к вопросу, решение уже было предложено @Akina

$str = '245/45 R18
8 x 18 ET49';
$result = preg_replace('/[^\d\n\r]+/', ',', $str);

Как вариант можно заменить все символы отличные от цифры или знака перевода строки на запятую, или пробел, вообщем разделитель можно указать любой

Результат:

245,45,18
8,18,49
→ Ссылка
Автор решения: Denis Startsev

Возможно удобнее будет матчить в ассоциативный массив

$s = '245/45 R18';

preg_match('/^(?<width>\d+)\/(?<height>\d+)\sR(?<size>\d+)$/u', $s, $m);
var_dump($m);

на выходе получаем массив с именованными полями

array(7) { 
    [0]=> string(10) "245/45 R18" 
    ["width"]=> string(3) "245" 
    [1]=> string(3) "245" 
    ["height"]=> string(2) "45" 
    [2]=> string(2) "45" 
    ["size"]=> string(2) "18" 
    [3]=> string(2) "18" 
}

аналогично можно именовать для дисков

^(?<count>\d+)\sx\s(?<dia>\d+)\sET(?<ET>\d+)$
→ Ссылка