Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C glib中解析url查询参数?_C_Parsing_Url_Glib - Fatal编程技术网

在C glib中解析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; 没有一

是否可以在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;

没有一个单一的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);