В заголовке запроса приходит довольно сложное содержание:
X-CALLBACK-ID timestamp=1563105451261; nonce=a07bfa17;value=E4YeOsnMtHZ6592U8B9S37238E+Hwtjfrmpf8AQXF+c=
Я хочу распарсить это в массив
$aaa = [
'timestamp' =>1563105451261,
'nonce' =>'a07bfa17',
'value' =>'E4YeOsnMtHZ6592U8B9S37238E+Hwtjfrmpf8AQXF+c=',
];
Впринципе написал рабочее решение, но оно как то стремно выглядит
public function handle($request, Closure $next)
{
$xHeader = $request->header("X-CALLBACK-ID");
if (!$xHeader) {
abort(403);
}
$kvPairs = explode(";", $xHeader);
if (count($kvPairs) != 3) {
abort(403);
}
$parsedHeader = [];
foreach ($kvPairs as $pair) {
$pos = strpos($pair, "=");
if (!$pos) {
abort(403);
}
$parsedHeader[substr($pair, 0, $pos)] = substr($pair, $pos + 1);
}
if (!isset($parsedHeader['timestamp'], $parsedHeader['nonce'], $parsedHeader['value'])) {
abort(403);
}
Возможно есть какое то более производительное и читабельное решение? Подскажите плиз если знаете как реализовать это лучше?