Ну, предполагая, что ваш ожидаемый результат равен array('sev', 'yes', 'sev1', 'no', 'sev2', 'yes')
, вы можете использовать preg_split
:
$data = preg_split('/[-*]/', $string, -1, PREG_SPLIT_NO_EMPTY);
Или, учитывая, что похоже, что у вас есть ключевые сегменты (это означает, что первый yes
связан с sev
, первый no
связан с sev1
и т. Д.), Вам может быть лучше либо несколько взрывов:
$result = array();
$data = explode('-', $string);
foreach ($data as $str) {
if (empty($str)) continue;
list ($key, $value) = explode('*', $str);
$result[$key] = $value;
}
Или преобразовать его в сегмент в стиле URL и использовать parse_str
...
$tmp = str_replace(array('-', '*'), array('&', '='), $string);
parse_str($tmp, $result);
Оба из них будут генерировать массивы, такие как:
array(
'sev' => 'yes',
'sev1' => 'no',
'sev2' => 'yes',
);