Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4067348
Header.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
Header.php
View Options
<?php
declare
(
strict_types
=
1
);
namespace
GuzzleHttp\Psr7
;
final
class
Header
{
/**
* 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 will inject a key with a '' string value.
*
* @param string|array $header Header to parse into components.
*/
public
static
function
parse
(
$header
):
array
{
static
$trimmed
=
"
\"
'
\n\t\r
"
;
$params
=
$matches
=
[];
foreach
((
array
)
$header
as
$value
)
{
foreach
(
self
::
splitList
(
$value
)
as
$val
)
{
$part
=
[];
foreach
(
preg_split
(
'/;(?=([^"]*"[^"]*")*[^"]*$)/'
,
$val
)
?:
[]
as
$kvp
)
{
if
(
preg_match_all
(
'/<[^>]+>|[^=]+/'
,
$kvp
,
$matches
))
{
$m
=
$matches
[
0
];
if
(
isset
(
$m
[
1
]))
{
$part
[
trim
(
$m
[
0
],
$trimmed
)]
=
trim
(
$m
[
1
],
$trimmed
);
}
else
{
$part
[]
=
trim
(
$m
[
0
],
$trimmed
);
}
}
}
if
(
$part
)
{
$params
[]
=
$part
;
}
}
}
return
$params
;
}
/**
* Converts an array of header values that may contain comma separated
* headers into an array of headers with no comma separated values.
*
* @param string|array $header Header to normalize.
*
* @deprecated Use self::splitList() instead.
*/
public
static
function
normalize
(
$header
):
array
{
$result
=
[];
foreach
((
array
)
$header
as
$value
)
{
foreach
(
self
::
splitList
(
$value
)
as
$parsed
)
{
$result
[]
=
$parsed
;
}
}
return
$result
;
}
/**
* 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'.
*
* @param string|string[] $values Header value as returned by MessageInterface::getHeader()
*
* @return string[]
*/
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
;
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Aug 16 2026, 18:15 (12 w, 1 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
bf/86/ccb0e52a09f51160bb1616522771
Default Alt Text
Header.php (3 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment