function Header::splitList
Splits a HTTP header defined to contain a comma-separated list into each individual value. Empty values will be removed.
Example headers include 'accept', 'cache-control' and 'if-none-match'.
This method must not be used to parse headers that are not defined as a list, such as 'user-agent' or 'set-cookie'.
Parameters
string|string[] $values Header value as returned by MessageInterface::getHeader():
Return value
string[]
2 calls to Header::splitList()
- Header::normalize in vendor/
guzzlehttp/ psr7/ src/ Header.php - Converts an array of header values that may contain comma separated headers into an array of headers with no comma separated values.
- Header::parse in vendor/
guzzlehttp/ psr7/ src/ Header.php - Parse an array of header values containing ";" separated data into an array of associative arrays representing the header key value pair data of the header. When a parameter does not contain a value, but just contains a key, this function…
File
-
vendor/
guzzlehttp/ psr7/ src/ Header.php, line 77
Class
Namespace
GuzzleHttp\Psr7Code
public static function splitList($values) : array {
if (!\is_array($values)) {
$values = [
$values,
];
}
$result = [];
foreach ($values as $value) {
if (!\is_string($value)) {
throw new \TypeError('$header must either be a string or an array containing strings.');
}
$v = '';
$isQuoted = false;
$isEscaped = false;
for ($i = 0, $max = \strlen($value); $i < $max; ++$i) {
if ($isEscaped) {
$v .= $value[$i];
$isEscaped = false;
continue;
}
if (!$isQuoted && $value[$i] === ',') {
$v = \trim($v);
if ($v !== '') {
$result[] = $v;
}
$v = '';
continue;
}
if ($isQuoted && $value[$i] === '\\') {
$isEscaped = true;
$v .= $value[$i];
continue;
}
if ($value[$i] === '"') {
$isQuoted = !$isQuoted;
$v .= $value[$i];
continue;
}
$v .= $value[$i];
}
$v = \trim($v);
if ($v !== '') {
$result[] = $v;
}
}
return $result;
}