在C glib中解析url查询参数?

问题描述 投票:0回答:4

glib下C中是否可以获取URL片段参数?

我有一个类似

file://localhost/home/me/notepad.txt#line=100,2

的网址

获取 url 末尾指定的参数的最佳方式是什么?

c parsing url glib
4个回答
2
投票

没有一个 GLib 函数可以满足您的要求。如果您可以使用 libsoup (也是 GNOME 堆栈的一部分),那么您可以使用

SoupURI
:

g_autoptr(SoupURI) uri = soup_uri_new (uri_string);
const gchar *fragment = soup_uri_get_fragment (uri);

这会将

fragment
设置为
line=100,2
。您必须手动进一步解析片段格式。
g_strsplit()
对此很有用。


0
投票

您还可以查看 gnome-terminalterminal-nautilus.c 文件中的函数 parse_sftp_uri。 它可以轻松适应通用 URI。


0
投票

自 GLib 2.66(2020 年 9 月 10 日发布)起,可以使用 GUri 解析 uri,例如。 g_uri_parse()

大多数其他答案的日期都在 2020 年之前,这就是为什么他们说这是不可能的。


-1
投票

不确定您是否要解析 notepad.txt#line=100,2#line=100,2,不过我的答案应该适用于这两种情况。

您可以使用

strrchr()
(man strrchr) 函数来获取字符串中最后一次出现的字符。

类似:

char *file;
file = strrchr(url, '/') + 1;
© www.soinside.com 2019 - 2024. All rights reserved.