Что нового

StringRegExpReplace выборка из многих подобных строк одну

Dere

Новичок
Сообщения
30
Репутация
2
Добрый день.
Помогите или ткните где глянуть.
Есть кусок HTML, где много одинаковых "единиц", так надо выбрать из них один параметр который заключается между "
Цена: <IMG src="img/main/money.png">" и </TD>, но найти этот переменную которая относится к определенному итему (up_item=11111). Т.е. получается item=11111 в коде страницы это уникальная единица.
к примеру
Код:
$item = "11111"
$Cena = StringRegExpReplace($sHTML, '(?si).*
Цена:\s<IMG\ssrc="img/main/money.png">((?-s).*?)</TD></TR></TBODY></TABLE><CENTER><A\shref="?up_item='&$item&'.*', '\1')

Так не находит, видимо потому это другая строка. Подскажите как выцепить.
Код:
<TD width=65><IMG src="img/item/nogi/c1.png"></TD>
<TD>Время: <IMG src="img/main/time.png"> 0ч. 15м.
Цена: <IMG src="img/main/money.png">2000</TD></TR></TBODY></TABLE>
<CENTER><A href="?up_item=11111"><IMG src="img/inter/up.png"></A></CENTER></DIV>
<TABLE>
<TBODY>
<TR>
<TD width=65><IMG src="img/item/weapon/c1.png"></TD>
<TD>Время: <IMG src="img/main/time.png"> 0ч. 15м.
Цена: <IMG src="img/main/money.png">3000</TD></TR></TBODY></TABLE>
<CENTER><A href="?up_item=22222"><IMG src="img/inter/up.png"></A></CENTER></DIV>
<TABLE>
<TBODY>
<TR>
<TD width=65><IMG src="img/item/golova/c1.png"></TD>
<TD>Время: <IMG src="img/main/time.png"> 0ч. 15м.
Цена: <IMG src="img/main/money.png">4000</TD></TR></TBODY></TABLE>
<CENTER><A href="?up_item=33333"><IMG src="img/inter/up.png"></A></CENTER></DIV>
<TABLE>
<TBODY>
 

gunter123

Продвинутый
Сообщения
159
Репутация
69
Если надо просто найти совпадение, то вот так:
Код:
#include <Array.au3>
$sText = '<TD width=65><IMG src="img/item/nogi/c1.png"></TD>' & @CRLF & _
         '<TD>Время: <IMG src="img/main/time.png"> 0ч. 15м.
Цена: <IMG src="img/main/money.png">1000</TD></TR></TBODY></TABLE>' & @CRLF & _
         '<CENTER><A href="?up_item=11111"><IMG src="img/inter/up.png"></A></CENTER></DIV>' & @CRLF & _
         '<TABLE>' & @CRLF & _
         '<TBODY>' & @CRLF & _
         '<TR>' & @CRLF & _
         '<TD width=65><IMG src="img/item/weapon/c1.png"></TD>' & @CRLF & _
         '<TD>Время: <IMG src="img/main/time.png"> 0ч. 15м.
Цена: <IMG src="img/main/money.png">3000</TD></TR></TBODY></TABLE>' & @CRLF & _
         '<CENTER><A href="?up_item=22222"><IMG src="img/inter/up.png"></A></CENTER></DIV>' & @CRLF & _
         '<TABLE>' & @CRLF & _
         '<TBODY>' & @CRLF & _
         '<TR>' & @CRLF & _
         '<TD width=65><IMG src="img/item/golova/c1.png"></TD>' & @CRLF & _
         '<TD>Время: <IMG src="img/main/time.png"> 0ч. 15м.
Цена: <IMG src="img/main/money.png">4000</TD></TR></TBODY></TABLE>' & @CRLF & _
         '<CENTER><A href="?up_item=33333"><IMG src="img/inter/up.png"></A></CENTER></DIV>' & @CRLF & _
         '<TABLE>' & @CRLF & _
         '<TBODY>'

$sSearch = "11111"                      ; Искомая строка
$aResult = StringRegExp($sText, '(?s)<IMG src=\"img/main/money\.png\">([0-9]+)</TD></TR></TBODY></TABLE>[^<]+?<CENTER><A href=\"\?up_item=' & $sSearch & '\">', 3)
If Not @error Then
   _ArrayDisplay($aResult, "Найдено")
Else
   MsgBox(4096, "", "Совпадений не найдено")
EndIf

Upd. Неправильно прочитал, вот так работает
 
Автор
D

Dere

Новичок
Сообщения
30
Репутация
2
Нет не совпадение, эта цена может быть любой. Нужно вычленить именно сумму по данному итему.
 

hedji

Продвинутый
Сообщения
409
Репутация
94
Код:
$per = "11111"
$file = FileReadToArray(@ScriptDir & "\text.txt") ;прочитать html
For $i=0 To UBound($file)-1
	If IsArray(StringRegExp($file[$i], 'up_item='&$per, 3)) Then
		$price = StringRegExp($file[$i-1], "money.png.>(.*)<.TD>", 3)
		MsgBox(0, "", "Для " & $per & " цена " & $price[0])
	EndIf
Next
 
Автор
D

Dere

Новичок
Сообщения
30
Репутация
2
если по файлу работать то работает, спасибо и + в репу
И странность: на винде 10 работает, на ХР не захотел. Не понял "FileReadToArray".
а как сделать если это HTML?
 

hedji

Продвинутый
Сообщения
409
Репутация
94
Dere сказал(а):
если по файлу работать то работает, спасибо и + в репу
И странность: на винде 10 работает, на ХР не захотел. Не понял "FileReadToArray".
а как сделать если это HTML?
Попилить html в массив при помощи
Код:
StringSplit

Или использовать вариант регулярки от gunter123
 

СН3СН2ОН

Знающий
Сообщения
78
Репутация
12
Видимо автор этого хотел
Код:
$item='11111'
$Cena = StringRegExpReplace($sHTML, '(?si).*Цена.*?>(.*?)<.*?item='&$item&'.*', '\1')
ConsoleWrite($Cena & @CRLF)
 
Автор
D

Dere

Новичок
Сообщения
30
Репутация
2
всем спасибо.
вопрос решил через StringSplit.
 
Верх