Что нового

чтение строки с циклом

FrecKDancE

Новичок
Сообщения
19
Репутация
1
Всем привет. Пытался сделать чтение строки. Создал цикл, всё работает, но выдаёт постоянно одно и то же. Как сделать так, чтобы читалось не только начало строки, а весь текст?

Имеется текст:

{"success":true,"items":[
{"id":"20338709384","classid":"3608084134","instanceid":"519977179","market_hash_name":"M249 | Jungle (Field-Tested)"},
{"id":"20338708544","classid":"4141786067","instanceid":"519977179","market_hash_name":"SSG 08 | Jungle Dashed (Minimal Wear)"}
]}

Имеется код:
PHP:
         $i = 1
         While $i <= 2
         $hash_name = StringRegExpReplace($http_inv,'(?s).*?market_hash_name":"([^"]+).*','\1')
         $classid = StringRegExpReplace($http_inv,'(?s).*?classid":"([^"]+).*','\1')
         $instanceid = StringRegExpReplace($http_inv,'(?s).*?instanceid":"([^"]+).*','\1')
         MsgBox(4096, @ScriptName, "hash_name: "&$hash_name&@CRLF&"classid: "&$classid&@CRLF&"instanceid: "&$instanceid)
         $i = $i + 1
         WEnd
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
выдаёт постоянно одно и то же
Ну так ты и запрашиваешь одно и тоже.
Скорее сего нужно это:
Код:
#include <Array.au3>

$http_inv = _
    '{"success":true,"items":[' & @CRLF & _
    '{"id":"20338709384","classid":"3608084134","instanceid":"519977179","market_hash_name":"M249 | Jungle (Field-Tested)"},' & @CRLF & _
    '{"id":"20338708544","classid":"4141786067","instanceid":"519977179","market_hash_name":"SSG 08 | Jungle Dashed (Minimal Wear)"}' & @CRLF & _
    ']}'

$aMarketHashName = StringRegExp($http_inv, '(?s)market_hash_name":"([^"]+)', 3)
$aClassID = StringRegExp($http_inv, '(?s)classid":"([^"]+)', 3)
$aInstanceID = StringRegExp($http_inv, '(?s)instanceid":"([^"]+)', 3)

_ArrayDisplay($aMarketHashName)
_ArrayDisplay($aClassID)
_ArrayDisplay($aInstanceID)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Или так:
Код:
$http_inv = _
    '{"success":true,"items":[' & @CRLF & _
    '{"id":"20338709384","classid":"3608084134","instanceid":"519977179","market_hash_name":"M249 | Jungle (Field-Tested)"},' & @CRLF & _
    '{"id":"20338708544","classid":"4141786067","instanceid":"519977179","market_hash_name":"SSG 08 | Jungle Dashed (Minimal Wear)"}' & @CRLF & _
    ']}'

$aItems = StringRegExp($http_inv, '(?s)(?:market_hash_name|classid|instanceid)":"([^"]+)', 3)
$iItems = UBound($aItems)

For $i = 0 To $iItems - 1 Step 3
    $classid = $aItems[$i]
    $instanceid = (($i + 1 < $iItems) ? $aItems[$i + 1] : '')
    $hash_name = (($i + 2 < $iItems) ? $aItems[$i + 2] : '')
    
    MsgBox(4096, @ScriptName, "hash_name: " & $hash_name & @CRLF & "classid: " & $classid & @CRLF & "instanceid: " & $instanceid)
Next
 
Автор
F

FrecKDancE

Новичок
Сообщения
19
Репутация
1
Спасибо большое, выбрал 2-ой вариант, всё работает :smile:
 
Верх