Jak ze stringa zrobić tablice klucz = wartość ?

0
sender=user8992;session=7wdd49ea5eb118a5215c8c251d2c2a60;algorithm=SHA;content=text

jak zamienić taki string na tablicę

[
  "sender" => "user8992"
  "session" => "7wdd49ea5eb118a5215c8c251d2c2a60"
  "algorithm" => "SHA"
  "content" => "text"
]
6

Jeśli klucze się nie powtarzają.

<?php
$x = "sender=user8992;session=7wdd49ea5eb118a5215c8c251d2c2a60;algorithm=SHA;content=text";
              
$z = explode(";",$x);
$arr = [];
foreach ($z as $row){
    $y = explode("=",$row);
    $arr[$y[0]] = $y[1];
}

print_r($arr);

//Result
/*
Array
(
    [sender] => user8992
    [session] => 7wdd49ea5eb118a5215c8c251d2c2a60
    [algorithm] => SHA
    [content] => text
)
*/
6

Bez pętli.

$x = "sender=user8992;session=7wdd49ea5eb118a5215c8c251d2c2a60;algorithm=SHA;content=text";
preg_match_all("*([^;=]+)=([^;=]+)*", $x, $m);
$result = array_combine($m[1], $m[2]);
print_r($result);

4

To może jeszcze ja. Z lekką nutką defensywną :)

$string = 'sender=user8992;session=7wdd49ea5eb118a5215c8c251d2c2a60;algorithm=SHA;content=text';
$array = explode(';', $string);

$fn = function ($key, $value): ?array {
    $tmp = explode('=', $value, 2);

    if (count($tmp) !== 2) {
        return null;
    }

    return [$tmp[0], $tmp[1]];
};
$data = array_column(array_map($fn, array_keys($array), $array), 1, 0);
0

@old_man: ale można tak: parse_str(str_replace(';', '&', $text), $result);

1 użytkowników online, w tym zalogowanych: 0, gości: 1