Разобрать список атрибутов / значений в PHP

Дана строка с парами атрибут / значение, такими как

attr1="some text" attr2 = "some other text" attr3= "some weird !@'#$\"=+ text"

цель состоит в том, чтобы проанализировать это и вывести ассоциативный массив, в этом случае:

array('attr1' => 'some text',
      'attr2' => 'some other text',
      'attr3' => 'some weird !@\'#$\"=+ text')

Обратите внимание на непоследовательный интервал вокруг знаков равенства, экранированную двойную кавычку на входе и экранированную одинарную кавычку на выходе.