我有这样的网址:
http://192.168.0.1:8080/servlet/rece
Run Code Online (Sandbox Code Playgroud)
我想解析URL以获取值:
IP: 192.168.0.1
Port: 8080
page: /servlet/rece
Run Code Online (Sandbox Code Playgroud)
我怎么做?
bor*_*yer 25
就个人而言,我从W3C窃取HTParse.c模块 (例如,它在lynx Web浏览器中使用).然后,你可以做以下事情:
strncpy(hostname, HTParse(url, "", PARSE_HOST), size)
Run Code Online (Sandbox Code Playgroud)
使用完善且已调试的库的重要一点是,您不会陷入URL解析的典型陷阱(当主机是IP地址时,许多正则表达式失败,例如,特别是IPv6).
Jia*_*ian 11
我写了一个简单的代码使用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"
Run Code Online (Sandbox Code Playgroud)
dir*_*tly -3
编写自定义解析器或使用字符串替换函数之一来替换分隔符“:”,然后使用sscanf().