#include <stdlib.h>
#include <stdio.h>
#include <string.h>
static int findfirst(char *s, char *a);
static void trimspace(char *p);
static char *url_del_args(char *url_, char *del_args_);
int findfirst(char *s, char *a)
{
int ls,la,i;
int flag = -1;
ls = strlen(s);
la = strlen(a);
if (la > ls)
return -2;
for (i=0;i<=ls-la;i++)
{
if(strncmp(s+i,a,la)==0)
return i;
}
return flag;
};
// 去掉空格字符
void trimspace(char *p)
{
char *q;
if(*p!='\0')
q=p+strlen(p)-1;
else
return;
for(;*q==' ';q--);
if(*q == ' ')
*q='\0';
for(q=p;*q==' ';q++);
strcpy(p,q);
return;
}
char *url_del_args(char *url_, char *del_args_)
{
static char url[256] ={0};
memcpy(url, url_, strlen(url_));
char del_args[56] = {0};
memcpy(del_args, del_args_, strlen(del_args_));
char *header = url;
char *arg = strchr(url, '?') + 1;
char *ender = strchr(url, ' ')+1;
int header_len = strchr(url, '?') - url;
url[header_len] = '\0';
int arg_len = strchr(arg, ' ') - arg;
arg[arg_len] = '\0';
char arg_value[256] = {0};
char* delim="&";
char* p=strtok(arg,delim);
while(p!=NULL)
{
trimspace(p);
char pln[56] = {0};
int p_en = strchr(p, '=') - p;
memcpy(pln, p, p_en);
int flag = findfirst(del_args, pln) ;
if( flag < 0)
{
strcat(arg_value, p);
strcat(arg_value, "&");
}
p=strtok(NULL,delim);
}
int a_v_len = strlen(arg_value)-1;
if(arg_value[a_v_len] == '&')
{
arg_value[a_v_len] = '\0';
}
if(strlen(arg_value))
{
strcat(url, "?");
strcat(url, arg_value);
}
strcat(url, " ");
strcat(url, ender);
return url;
}
int main()
{
char *url_ = "/view/1/services.html?name=James&age=117&loca=earth HTTP/1.1\r\nHost" ;
char *del_args_ = "name,age";
char *result = url_del_args(url_, del_args_);
printf("result: %s\n", result);
return 0;
}
消除URL中指定的参数
最新推荐文章于 2024-08-10 04:11:12 发布