public static function parse($header)
{
$categories = array();
if (!empty($header)) {
foreach (preg_split('/,(?=(?:[^"]*"[^"]*")*[^"]*$)/', $header) as $category) {
$bits = preg_split('/;(?=(?:[^"]*"[^"]*")*[^"]*$)/', $category);
$term = trim(array_shift($bits));
$scheme = '';
foreach ($bits as $bit) {
if (preg_match('/scheme=(.*)/', $bit, $m)) {
$scheme = trim($m[1], '"');
}
}
$categories[$scheme][] = $term;
}
}
return new self($categories);
}