public function parse()
{
preg_match_all('/(\\w+):\\s*"([^"]+)"|(\\w+):\\s*([\\S]+)|"([\\w\\s]+(?!:))"|([\\S]+(?!:))/im', $this->value, $matches, PREG_SET_ORDER);
$results = array();
foreach ($matches as $match) {
if (!empty($match[1])) {
$results[$match[1]][] = trim($match[2], '"');
}
if (!empty($match[3])) {
$results[$match[3]][] = trim($match[4], '"');
}
if (!empty($match[5])) {
$results['text'][] = trim($match[5], '"');
}
if (!empty($match[6])) {
$results['text'][] = trim($match[6], '"');
}
}
return $results;
}