UriParamsIter
Description:
Initializes an attribute/value pair iterator.
The iterator keeps pointers to the params
and separators
arguments, those variables must thus outlive the iterator
and not be modified during the iteration.
If g_uri_params_www_form is passed in flags
, `+` characters in the param string will be replaced
with spaces in the output. For example, `foo=bar+baz` will give attribute `foo` with value `bar baz`. This is commonly used on the web (the
`https` and `http` schemes only), but is deprecated in favour of the equivalent of encoding spaces as `20`.
Unlike with parse_params,
g_uri_params_case_insensitive has no effect if passed to flags
for UriParamsIter. The
caller is responsible for doing their own case-insensitive comparisons.
GUriParamsIter iter;
GError *error = NULL;
gchar *unowned_attr, *unowned_value;
g_uri_params_iter_init (&iter, "foo=bar&baz=bar&Foo=frob&baz=bar2", -1, "&", G_URI_PARAMS_NONE);
while (g_uri_params_iter_next (&iter, &unowned_attr, &unowned_value, &error))
{
g_autofree gchar *attr = g_steal_pointer (&unowned_attr);
g_autofree gchar *value = g_steal_pointer (&unowned_value);
// do something with attr and value; this code will be called 4 times
// for the params string in this example: once with attr=foo and value=bar,
// then with baz/bar, then Foo/frob, then baz/bar2.
}
if (error)
// handle parsing error
Parameters:
this |
an uninitialized UriParamsIter |
length |
the length of |
separators |
the separator byte character set between parameters. (usually `&`, but sometimes `;` or both `&;`). Note that this function works on bytes not characters, so it can't be used to delimit UTF-8 strings for anything but ASCII characters. You may pass an empty set, in which case no splitting will occur. |
flags |
flags to modify the way the parameters are handled. |
params |
a `%`-encoded string containing `attribute=value` parameters |