#include <stdio.h>
#include <string.h>
#include "my_func.h"
int main()
{
char str[3][1024] = {"<input type=\"hidden\" name=\"ses\" value=\"tq9084e\">","<input type=\"text\" name=\"sess\" value=\"test\">","<input type=\"hidden\" name=\"sess\" value=\"adkdin348bna80qajklh\">"};
char prt[] = "<input type=\"hidden\" name=\"sess\" value=\"*\">";
char *sess = NULL;
int i;
for(i=0; i<3; i++)
{
sess = extraction(str[i],prt);
if(sess != NULL)
{
break;
}
}
printf("%s",sess);
getch();
}
char *extraction(char *str,char *prt)
{
static char data[1024];
int i,x,y,flag;
x = 0;
for(i=0; i<strlen(prt); i++)
{
if(prt[i] == '*')
{
x = i;
}
}
if(x == 0)
{
return NULL;
}
for(i=0; i<x; i++)
{
if(str[i] != prt[i])
{
return NULL;
}
}
flag = 0;
z = 0;
x = 0;
for(i=0; i<strlen(str); i++)
{
if(str[i] == prt[x])
{
if(flag == 1)
{
break;
}
else
{
x++;
}
}
else if((str[i] != prt[x]) && (flag == 0))
{
flag = 1;
x++;
}
if(flag == 1)
{
data[z] = str[i];
z++;
}
}
data[z] = '\0';
if(strlen(data) == 0)
{
return NULL;
}
else
{
return data;
}
}
PHPの正規表現で文字列を取得するような感じです。
現在のコードでは比較文字列を
<input type=\"hidden\" name=\"sess\" value=\"*\">
このようにしてるので配列の要素2からvalueの値を取得します。
ここまではいいのですが、これを機能拡張して、ワイルドカードをn個にしようとしてます。
【例】
<input type=\"hidden\" name=\"*\" value=\"*"\>
もちろん今のままだと要素0と要素2に該当するのであくまで例なのですが・・・
頭が混乱してしまい、うまく作れそうにありませんので助言お願いします。
また、今のコードでおかしな点、不必要な処理、間違ってる所などありましたら同時に教えてください。