【发布时间】:2011-06-02 18:52:33
【问题描述】:
我正在编写一个 C/CGI Web 应用程序。是否有一个库可以将查询字符串解析为GHashTable 之类的东西?我可以自己写,但似乎不值得重新发明轮子。
【问题讨论】:
标签: c cgi query-string
我正在编写一个 C/CGI Web 应用程序。是否有一个库可以将查询字符串解析为GHashTable 之类的东西?我可以自己写,但似乎不值得重新发明轮子。
【问题讨论】:
标签: c cgi query-string
您可能会发现 Apache Portable Runtime (apr) 库中的 ap_getword 函数系列很有用。
大多数字符串解析例程都属于 ap_getword* 系列,它们共同提供类似于 Perl 的 split() 函数的功能。该系列的每个成员都能够从字符串中提取一个单词,将文本拆分为分隔符,例如空格或逗号。与 Perl split() 一次拆分整个字符串并在列表中返回片段不同,ap_getword* 函数一次对一个单词进行操作。该函数每次被调用时都会返回下一个单词,并通过增加一个指针来跟踪它的位置。
你可以在 google 上搜索"ap_getword(r->pool" "httpd.h" 并找到一些相关的源代码来学习。
【讨论】:
如果您真的在编写 C 并且知道键集,则最好将值存储在 struct 中,而不是一些臃肿的哈希表中。有一个static const 表:
offsetof 宏)并使用它来解析查询字符串并填写结构。
【讨论】:
const 表)和更少的代码复杂度。
uriparser 库可以将query strings 解析为键值对。
【讨论】: