реклама на сайте
подробности

 
 
> Как из текстовой строки вытащить подстроку, после определенного шаблона?
Димон Безпарольн...
сообщение Sep 7 2017, 14:06
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247



Есть допустим строка:

Код
unsigned char HTTPStr[] = "setting.html?SSID=sd&PASSWORD=dsd&NOTE=sds";



Нужно вытащить из нее sd и dsd.

Делаю так:

Код
int LeechPar(char* SrsBuf, char* Template, char* DestBuf)

{
    int T = strstr((const char*)SrsBuf, Template) + (strlen(Template));
    if(!T) {return 0;}
    int T1 = strstr((const char*)T,"&");
    if(!T1) {return 0;}
    int T2 = T1 - T;
        if(T2 > 20){return 0;}
    memcpy(DestBuf, T, T2);
    DestBuf[T2] = 0;
    return T2;
}

int main (void)
{    

    char Buf[20];

    //int T = strstr((const char*)HTTPStr,"SSID=") + 5;
    //int T1 = strstr((const char*)T,"&");
    //memcpy(Buf, T, T1 - T);
    //Buf[T1 - T] = 0;
    
    int P = LeechPar(HTTPStr, "SSID=", Buf);
    printf("\n%s %d\n", Buf, P);            

    P = LeechPar(HTTPStr, "PASSWORD=", Buf);
    printf("\n%s %d\n", Buf, P);    

}


Какие могут быть подводные камни? И может быть есть способ проще?

Сообщение отредактировал Димон Безпарольный - Sep 7 2017, 14:16
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
timurey
сообщение Sep 8 2017, 07:25
Сообщение #2





Группа: Участник
Сообщений: 11
Регистрация: 10-05-07
Пользователь №: 27 628



Довольно простой парсер (взято отсюда: http://we.easyelectronics.ru/electro-and-p...ttp-i-cgi.html)

Код
char *url, *p, *params,

// Разбираем URL на путь и параметры
if((params = strchr(url, '?')))
    *(params++) = 0;

// Разбираем параметры
while(params)
{
     // Смотрим где заканчивается параметр
    if((p = strchr(params, '&')))
        *(p++) = 0;
                
    // Разбираем параметр на имя и значение
    name = params;
    if((value = strchr(name, '=')))
        *(value++) = 0;
                
    // Параметр = led (on/off)?
    if( (strcmp(name, "led") == 0 ) && value )
    {
        if(strcmp(value, "on") == 0)
            led_on()
        else if(strcmp(value, "off") == 0)
            led_off()
     }
                
     // Параметр = lang (en/ru)?
     else if( (strcmp_P(name, PSTR("lang")) == 0) && value )
     {
         if(strcmp_P(value, "en") == 0)
             lang_ru = 0;
         else if(strcmp_P(value, "ru") == 0)
             lang_ru = 1;
      }
                
      // Переходим к следующему параметру
      params = p;
}


--------------------
timurey.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Димон Безпарольный   Как из текстовой строки вытащить подстроку   Sep 7 2017, 14:06
- - scifi   Кодsscanf(HTTPStr, "setting.html?SSID=...   Sep 7 2017, 14:21
- - Димон Безпарольный   Если так, то что - то не получается: Код char ssi...   Sep 7 2017, 15:02
|- - aaarrr   Цитата(Димон Безпарольный @ Sep 7 2017, 18...   Sep 7 2017, 15:09
|- - Димон Безпарольный   Цитата(aaarrr @ Sep 7 2017, 19:09) Плохая...   Sep 7 2017, 15:11
||- - aaarrr   Цитата(Димон Безпарольный @ Sep 7 2017, 18...   Sep 7 2017, 15:17
|- - scifi   Цитата(aaarrr @ Sep 7 2017, 18:09) Плохая...   Sep 7 2017, 16:07
|- - aaarrr   Цитата(scifi @ Sep 7 2017, 19:07) Издевае...   Sep 7 2017, 16:34
|- - Димон Безпарольный   Цитата(aaarrr @ Sep 7 2017, 20:34) Так оп...   Sep 7 2017, 16:48
|- - aaarrr   Цитата(Димон Безпарольный @ Sep 7 2017, 19...   Sep 7 2017, 17:17
|- - Димон Безпарольный   Цитата(aaarrr @ Sep 7 2017, 21:17) Подозр...   Sep 7 2017, 19:58
- - Димон Безпарольный   Некоторые убрал: Кодunsigned char HTTPStr[...   Sep 7 2017, 15:19
|- - aaarrr   Цитата(Димон Безпарольный @ Sep 7 2017, 18...   Sep 7 2017, 15:29
- - Димон Безпарольный   Сломал голову, что такое с и чему оно равно в стро...   Sep 7 2017, 15:41


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 08:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01398 секунд с 7
ELECTRONIX ©2004-2016