У меня есть строка вроде этого:
key = значение, key2 = значение2
- Как получить первые х символов из строки, не отрезая последнее слово?
- PHP-гнездовая переменная в эхо-строке, которая содержит тег HTML в конце
- Предотвращение инъекций PHP SQL со строковыми операциями
- php Замена нескольких пространств одним пространством
- PHP - нужно удалить повторяющиеся символы в строке, но хотелось бы включить исключения
и я хотел бы разобрать его примерно так:
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()
,
в качестве разделителя, вы можете использовать parse_str()
Если вы можете изменить формат строки, чтобы она соответствовала строке запроса URL (используя &
вместо, кроме всего прочего, вы можете использовать parse_str
. Обязательно используйте параметр двух параметров.