Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: regex траблы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
daglas1
Отправлено: 25 Января, 2013 - 15:16:58
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Июль 2011  


Помог: 1 раз(а)




Всем привет

static char* szHeader = "GET /demo HTTP/1.1\r\n"
"Upgrade: WebSocket\r\n"
"Connection: Upgrade\r\n"
"Sec-WebSocket-Key2: 4 @1 46546xW%0l 1 5\r\n"
"Host: example.com\r\n"
"Sec-WebSocket-Key1: 12998 5 Y3 1 .P00\r\n"
"Origin: http://example.com\r\n"
"WebSocket-Protocol: sample\r\n"
"\r\n"
"^n:ds[4U";


Нужно из поля Sec-WebSocket-Key1: вытащить значение . Т.е. 12998 5 Y3 1 .P00
Я делаю так

int WsciService::getHeaders(char* szHeaders, WEBSOCKET_HEADER* wsHeaderInOut){
if ( szHeaders==(char*)NULL || wsHeaderInOut==(WEBSOCKET_HEADER*)NULL ) return -1;
char* szKey1Pattern = "(Sec-WebSocket-Key1Улыбка.*";
//char* szKey1Pattern = "(Sec-WebSocket-Key1Улыбка[[:s:]](.+\\r\\n)";
//char* szKey1Pattern = "(Sec-WebSocket-Key1Улыбка([:print:])(.+\\r\\n)";
//char* szKey1Pattern = "(Sec-WebSocket-Key1Улыбка(.*)(.+\\r\\n)";

//char* p = strstr(szHeaders, "Sec-WebSocket-Key1:");
//if ( p!=(char*)NULL ) printf("%s", p);

regex_t regex;
int rc = regcomp(&regex, szKey1Pattern, 0);
if ( rc==0 ) {
regmatch_t pm[1];
rc = regexec(&regex, szHeaders, 1, pm, 0);
if ( rc==0 ) {
::memcpy(wsHeaderInOut->szK1, szHeaders + pm[0].rm_so, pm[0].rm_eo - pm[0].rm_so);
printf("Begin: %d\nEnd: %d\n", pm[0].rm_so, pm[0].rm_eo);
} else {
char szError[1024];
regerror(rc, &regex, szError, sizeof(szError));
printf("Exec error: %s\n", szError);
}
} else {
char szError[1024];
regerror(rc, &regex, szError, sizeof(szError));
printf("Compile error: %s\n", szError);
}
regfree(&regex);


Структура WEBSOCKET_HEADER это просто тесктовые поля
Перепробовал много вариантов, получается ерунда
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на C++ »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB