private function parseHeaders($headerContent)
{
$headers = [];
$headerParts = preg_split("/\\R/s", $headerContent, -1, PREG_SPLIT_NO_EMPTY);
foreach ($headerParts as $headerPart) {
if (($separatorPos = strpos($headerPart, ':')) === false) {
continue;
}
list($headerName, $headerValue) = explode(':', $headerPart, 2);
$headerName = strtolower(trim($headerName));
$headerValue = trim($headerValue);
if (strpos($headerValue, ';') === false) {
$headers[$headerName] = $headerValue;
} else {
$headers[$headerName] = [];
foreach (explode(';', $headerValue) as $part) {
$part = trim($part);
if (strpos($part, '=') === false) {
$headers[$headerName][] = $part;
} else {
list($name, $value) = explode('=', $part, 2);
$name = strtolower(trim($name));
$value = trim(trim($value), '"');
$headers[$headerName][$name] = $value;
}
}
}
}
return $headers;
}