<?php

class Tyre {
    /**
     * RegExp
     *
     * @var string
     */
    private $pattern;

    /**
     * @var string
     */
    private $subject;

    /**
     * @var string
     */
    private $brand;

    /**
     * @var string
     */
    private $width;

    /**
     * @var string
     */
    private $serial;

    /**
     * @var string
     */
    private $radius;

    /**
     * @var string
     */
    private $index;

    /**
     * @var string
     */
    private $model;

    private $tyreBrands = array(
        'Nokian',
        'Good Year',
        'Continental',
        // ...
    );

    public function __construct($subject) {
        $this->pattern = '#(' . implode('|', $this->tyreBrands) . ')\s(\d{3})/(\d{2})\sR(\d{2})\s(\d{2,3}\w)\s(.*)#';
        $this->subject = $subject;
    }

    public function parse() {
        if (preg_match($this->pattern, $this->subject, $matches)) {
        	if (count($matches) !== 7) {
        		throw new LogicException('Что-то пошло не так, слишком мало данные после парсинга.');
        	}
            $this->brand = $matches[1];
            $this->width = $matches[2];
            $this->serial = $matches[3];
            $this->radius = $matches[4];
            $this->index = $matches[5];
            $this->model = $matches[6];
        }
        
        echo 'Brand: ', $this->brand;
        echo '<br>';
        echo 'Типоразмер: ', $this->width, '/', $this->serial;
        echo '<br>';
        echo 'Радиус: ', $this->radius;
        echo '<br>';
        echo 'Индекс скорости: ', $this->index;
        echo '<br>';
        echo 'Модель: ', $this->model;
        echo '<hr>', PHP_EOL;
    }
}

$tyre = new Tyre('Nokian 185/70 R14 92T HKPL5');
$tyre->parse();

$tyre = new Tyre('Nokian 245/45 R18 100T HKPL 8 Run Flat  XL');
$tyre->parse();

$tyre = new Tyre('Good Year 175/65 R14 82T UG ICE ARCTIC D-STUD');
$tyre->parse();

$tyre = new Tyre('Good Year 205/70 R15 96T UG ICE ARCTIC D-STUD SUV');
$tyre->parse();