как разобрать POST body / GET аргументы? - PullRequest
0 голосов
/ 16 апреля 2011

Так что мне нужно проанализировать такую ​​строку login=julius&password=zgadnij&otherArg=Value с N аргументами, и каждый аргумент будет иметь значение. Вы можете найти такие аргументы и в запросах POST. Так как же создать парсер для таких строк с помощью Boost?

Ответы [ 2 ]

3 голосов
/ 16 апреля 2011
  • разделить на &
  • разделить получившиеся части на =
  • URL-декодирование (!) Имени и части значения

Регулярное выражение не требуется.

1 голос
/ 16 апреля 2011

В этом вопросе, как упоминалось Томалак , регулярное выражение может быть немного излишним.Если ваш реальный ввод более сложный и требуется регулярное выражение, иллюстрирует ли использование следующий код?

int main() {
  using namespace std;
  using namespace boost;
  string s = "login=julius&password=zgadnij&otherArg=Value";
  regex re_amp("&"), re_eq("=");
  typedef sregex_token_iterator sti;
  typedef vector< string > vs;
  typedef vs::iterator vsi;
  sti i( s.begin(), s.end(), re_amp, -1 ), sti_end;
  vs config( i, sti_end ); // split on &

  for ( vsi i = config.begin(), e = config.end();  i != e;  ++ i ) {
    // split on =
    vs setting( sti( i->begin(), i->end(), re_eq, -1 ), sti_end );
    for ( vsi i2 = setting.begin(), e2 = setting.end();  i2 != e2;  ++ i2 ) {
      cout<< *i2 <<endl;
    }
  }
}

Надеюсь, это поможет

...