Ответ 1
Если вы не возражаете использовать регулярное выражение...
$str = "key=value, key2=value2";
preg_match_all("/([^,= ]+)=([^,= ]+)/", $str, $r);
$result = array_combine($r[1], $r[2]);
var_dump($result);
У меня есть строка вроде этого:
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 правильно?
Если вы не возражаете использовать регулярное выражение...
$str = "key=value, key2=value2";
preg_match_all("/([^,= ]+)=([^,= ]+)/", $str, $r);
$result = array_combine($r[1], $r[2]);
var_dump($result);
<?php parse_str(str_replace(", ", "&", "key=value, key2=value2"), $array); ?>
если вы измените свою строку, чтобы использовать &
вместо ,
в качестве разделителя, вы можете использовать parse_str()
Если вы можете изменить формат строки, чтобы она соответствовала строке запроса URL (используя &
вместо ,
, между прочим, вы можете использовать parse_str
. Обязательно используйте параметр двух параметров.