在C glib中解析url查询参数?
是否可以在glib下获得C中的URL片段参数 我有一个类似在C glib中解析url查询参数?,c,parsing,url,glib,C,Parsing,Url,Glib,是否可以在glib下获得C中的URL片段参数 我有一个类似file://localhost/home/me/notepad.txt#line=100,2 获取url末尾指定参数的最佳方法是什么?不确定您是要解析notepad.txt#line=100,2还是#line=100,2,不过我的答案在这两种情况下都适用 可以使用strrchr()(man-strrchr)函数获取字符串中最后出现的字符 比如: char *file; file = strrchr(url, '/') + 1; 没有一
file://localhost/home/me/notepad.txt#line=100,2
获取url末尾指定参数的最佳方法是什么?不确定您是要解析notepad.txt#line=100,2还是#line=100,2,不过我的答案在这两种情况下都适用 可以使用
strrchr()
(man-strrchr)函数获取字符串中最后出现的字符
比如:
char *file;
file = strrchr(url, '/') + 1;
没有一个单一的GLib函数可以满足您的需求。如果您可以使用libsoup(也是GNOME堆栈的一部分),那么您可以使用:
这将把
fragment
设置为line=100,2
。您必须手工进一步解析您的片段格式。您还可以从gnome terminal nautilus.c文件中查看函数。
它可以很容易地适用于一般URI。GLib文档的内容表明不是;至少这不是一个方便的“为你做”功能。干杯,我想他们只是实现了他们所需要的-似乎有点奇怪,那里什么都没有。如果片段本身包含一个
/
,这将不起作用。我相信URL中不可能有“/”,否则它不是参数明确允许的/
(和?
)断断续续地。片段的语法是fragment=*(pchar/“/”/“?”)
。至少可以说,这有点令人惊讶,我当时在做搜索引擎优化,不得不解析数百万个URL进行分析,我想不起来曾经有过这个问题。我想我是幸运的:)谢谢你指出这一点!嗨,这是我想提取的行=100,2
。
g_autoptr(SoupURI) uri = soup_uri_new (uri_string);
const gchar *fragment = soup_uri_get_fragment (uri);