function zbx_get_params($string) { $params = array(); $quoted = false; for ($param_s = $i = 0, $len = strlen($string); $i < $len; $i++) { switch ($string[$i]) { case '"': $quoted = !$quoted; break; case ',': if (!$quoted) { $params[] = zbx_unquote_param(substr($string, $param_s, $i - $param_s)); $param_s = $i + 1; } break; case '\\': if ($quoted && $i + 1 < $len && ($string[$i + 1] == '\\' || $string[$i + 1] == '"')) { $i++; } break; } } if ($quoted) { error('Incorrect usage of quotes. [' . $string . ']'); return null; } if ($i > $param_s) { $params[] = zbx_unquote_param(substr($string, $param_s, $i - $param_s)); } return $params; }
function zbx_get_params($string) { $params = array(); $quoted = false; $prev_char = ''; $len = zbx_strlen($string); for ($param_s = $i = 0; $i < $len; $i++) { $char = zbx_substr($string, $i, 1); switch ($char) { case '"': if ($prev_char != '\\') { $quoted = !$quoted; } break; case ',': if (!$quoted) { $params[] = zbx_unquote_param(zbx_substr($string, $param_s, $i - $param_s)); $param_s = $i + 1; } break; case '\\': $next_symbol = zbx_substr($string, $i + 1, 1); if ($quoted && $i + 1 < $len && ($next_symbol == '\\' || $next_symbol == '"')) { $i++; } break; } $prev_char = $char; } if ($quoted) { error(S_INCORRECT_USAGE_OF_QUOTES . '. [' . $string . ']'); return null; } if ($i > $param_s) { $params[] = str_replace('\\"', '"', zbx_unquote_param(zbx_substr($string, $param_s, $i - $param_s))); } return $params; }