Вы можете использовать следующий RegEx для соответствия переменным:
$regex = '/(\w+)\s*=\s*"(.*?)"/';
Я бы предложил сначала совместить короткий код sublimevideo и получить его в строку со следующим RegEx:
$pattern = '/\[sublimevideo(.*?)\]/';
Чтобы получить правильные ключи массива, я использовал этот код:
// $string is string content you specified
preg_match_all($regex, $string, $matches);
$sublimevideo = array();
for ($i = 0; $i < count($matches[1]); $i++)
$sublimevideo[$matches[1][$i]] = $matches[2][$i];
Это возвращает следующий массив: (тот, который вы запросили)
Array
(
[class] => sublime
[poster] => http://video.host.com/_previews/600x450/sbx-60025-00-da-ANA.png
[src1] => http://video.host.com/_video/H.264/LO/sbx-60025-00-da-ANA.m4v
[src2] => (hd)http://video.host.com/_video/H.264/HI/sbx-60025-00-da-ANA.m4v
[width] => 560
[height] => 315
)