C を使用して URL を解析する最良の方法は?

個人的には HTParse.c を盗みます W3C のモジュール (たとえば、lynx Web ブラウザーで使用されます)。次に、次のようなことができます:

 strncpy(hostname, HTParse(url, "", PARSE_HOST), size)

十分に確立されたデバッグ済みのライブラリを使用する上で重要なことは、URL 解析の典型的な罠に陥らないことです (ホストが IP アドレス、特に IPv6 アドレスの場合、多くの正規表現は失敗します)。


非常に基本的な URL を解析できる sscanf を使用して簡単なコードを作成しました。

#include <stdio.h>

int main(void)
{
    const char text[] = "http://192.168.0.2:8888/servlet/rece";
    char ip[100];
    int port = 80;
    char page[100];
    sscanf(text, "http://%99[^:]:%99d/%99[^\n]", ip, &port, page);
    printf("ip = \"%s\"\n", ip);
    printf("port = \"%d\"\n", port);
    printf("page = \"%s\"\n", page);
    return 0;
}

./urlparse
ip = "192.168.0.2"
port = "8888"
page = "servlet/rece"

簡単な方法が必要な場合は、正規表現を使用します。それ以外の場合は、FLEX/BISON を使用してください。

URI 解析ライブラリを使用することもできます