PHP - разделить строку в парах ключ / значение - PullRequest
17 голосов
/ 07 февраля 2011

У меня есть такая строка:

ключ = значение, ключ2 = значение2

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

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, верно?

Ответы [ 4 ]

19 голосов
/ 07 февраля 2011

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

$str = "key=value, key2=value2";
preg_match_all("/([^,= ]+)=([^,= ]+)/", $str, $r); 
$result = array_combine($r[1], $r[2]);
var_dump($result);
13 голосов
/ 07 февраля 2011
<?php parse_str(str_replace(", ", "&", "key=value, key2=value2"), $array); ?>
11 голосов
/ 07 февраля 2011

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

2 голосов
/ 07 февраля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...