예제 #1
0
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;
}
예제 #2
0
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;
}