Регулярные выражение для параметров шин и дисков
Помогите пожалуйста составить регулярные выражение для получения параметров шин/дисков.
Для шин необходимо из строки 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);
Автор решения: 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+)$