Подтвердить что ты не робот

PHP - разбиение строк в парах ключ/значение

У меня есть строка вроде этого:

key = value, key2 = value2

и я хотел бы проанализировать его примерно так:

array(
  "key" => "value",
  "key2" => "value2"
)

Я мог бы сделать что-то вроде

$parts = explode(",", $string)
$parts = array_map("trim", $parts);
foreach($parts as $currentPart)
{
    list($key, $value) = explode("=", $currentPart);
    $keyValues[$key] = $value;
}

Но это кажется смешным. Должен быть какой-то способ сделать это умнее с PHP правильно?

4b9b3361

Ответ 1

Если вы не возражаете использовать регулярное выражение...

$str = "key=value, key2=value2";
preg_match_all("/([^,= ]+)=([^,= ]+)/", $str, $r); 
$result = array_combine($r[1], $r[2]);
var_dump($result);

Ответ 2

<?php parse_str(str_replace(", ", "&", "key=value, key2=value2"), $array); ?>

Ответ 3

если вы измените свою строку, чтобы использовать & вместо , в качестве разделителя, вы можете использовать parse_str()

Ответ 4

Если вы можете изменить формат строки, чтобы она соответствовала строке запроса URL (используя & вместо ,, между прочим, вы можете использовать parse_str. Обязательно используйте параметр двух параметров.