2015-10-20 3 views
1

Я не знаком с языком Lua, и мне бы хотелось, чтобы ваша помощь. Я пытаюсь получить некоторые значения через POST и значение есть нечто подобное:Найти подстроку между конкретными символами

pwd = password 
ssid = ssid_name 

swstat={string.find(payload,"pwd=")} 
swstat1={string.find(payload,"ssid=")} 
if swstat[2]~=nil then 
    pass=string.sub(payload,swstat[2]+1,#payload) 
    ssid=string.sub(payload,swstat1[2]+1,#payload) 
    print("Password: "..pass) 
    print("SSID: "..ssid) 
end 

Фактический результат выше коды (Посылает через веб-браузер SSID = Htc и пароль = пт):

Password: fr 
SSID: htc&pwd=fr 

Я хотел бы иметь в строке только пароль и в другой строке идентификатор сети. Итак, моя идея состоит в том, чтобы искать строку со следующей логикой: ssid = найти строку в строке, которая находится между «ssid =» и («&» или конец строки) pwd = найти строку, между «PWD =» и («&» или концом строки)

+1

'pass = payload: match '% f [% C] pwd = (% C +)'', 'ssid = payload: match '% f [% C] ssid = (% C +)'' –

ответ

3

Поскольку payload является допустимым форматом строка запроса, вы можете хранить соответствующую информацию внутри таблицы:

local tData = {} 
for sParam, sValue in payload:gmatch "([^=&]+)=([^=&]+)" do 
    tData[sParam:lower()] = sValue 
end 

Теперь вы будете имеют информацию в таблице tData:

tData.pwd  -- will have fr 
tData.ssid -- will have htc 
+0

Thank вы ... Отлично! – user2117118