Что нового

Парсинг текста и привязка ссылок к ним

Yoshiyuki

Новичок
Сообщения
40
Репутация
0
Здравствуйте, есть html код и в нем разбросаны строчки такого типа:
Код:
<div class="title_left"><h1><a href="ссылка1">Название1</a></h1>
<div class="title_left"><h1><a href="ссылка2">Название2</a></h1>
<div class="title_left"><h1><a href="ссылка3">Название3</a></h1>
<div class="title_left"><h1><a href="ссылка4">Название4</a></h1>
Нужно взять все название и перенести их в ComboBox и привязать ссылки к ним, что бы при нажатие переходило на ссылку. Возможно ли это сделать, если да то как?
Заранее благодарю!
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Код:
#include <GUIConstantsEx.au3>
#include <GUIComboBox.au3>
#include <Array.au3>

$sHtml = _
	'<div class="title_left"><h1><a href="ссылка1">Название1</a></h1>' & @CRLF & _
	'<div class="title_left"><h1><a href="ссылка2">Название2</a></h1>' & @CRLF & _
	'<div class="title_left"><h1><a href="ссылка3">Название3</a></h1>' & @CRLF & _
	'<div class="title_left"><h1><a href="ссылка4">Название4</a></h1>'

$hGUI = GUICreate('Test Script', 300, 200)
$iCombo = GUICtrlCreateCombo('', 20, 40, 120, 50, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_DROPDOWNLIST))

$aLinks = StringRegExp($sHtml, '<div class="title_left"><h1><a href="(.*?)">(.*?)</a></h1>', 3)

For $i = 1 To UBound($aLinks)-1 Step 2
	GUICtrlSetData($iCombo, $aLinks[$i], $aLinks[$i])
Next

GUISetState(@SW_SHOW, $hGUI)

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
		Case $iCombo
			$iIndex = _ArraySearch($aLinks, GUICtrlRead($iCombo))
			
			If $iIndex > 0 Then
				ShellExecute($aLinks[$iIndex - 1])
			EndIf
	EndSwitch
WEnd
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Немного изменил код CreatoR`а.
Код:
#include <GUIConstantsEx.au3>
#include <ComboConstants.au3>

Local $aLinks[1], $iInd

$sHtml = _
		'<div class="title_left"><h1><a href="ссылка1">Название1</a></h1>' & @CRLF & _
		'<div class="title_left"><h1><a href="ссылка2">Название2</a></h1>' & @CRLF & _
		'<div class="title_left"><h1><a href="ссылка3">Название3</a></h1>' & @CRLF & _
		'<div class="title_left"><h1><a href="ссылка4">Название4</a></h1>'

$hGUI = GUICreate('Test Script', 300, 200)
$iCombo = GUICtrlCreateCombo('', 20, 40, 120, 50, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_DROPDOWNLIST))

$vTmp = StringRegExp($sHtml, '<div class="title_left"><h1><a href="(.*?)">(.*?)</a></h1>', 3)
ReDim $aLinks[UBound($vTmp) / 2][2]
For $i = 0 To UBound($vTmp) - 1 Step 2
	$aLinks[$iInd][0] = $vTmp[$i]
	$aLinks[$iInd][1] = $vTmp[$i + 1]
	GUICtrlSetData($iCombo, $aLinks[$iInd][1], $aLinks[$iInd][1])
	$iInd += 1
Next
$vTmp = UBound($aLinks) - 1
$iInd = 0
GUISetState(@SW_SHOW, $hGUI)

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
		Case $iCombo
			$iInd = GUICtrlSendMsg($iCombo, $CB_GETCURSEL, 0, 0)
			Switch $iInd
				Case 0 To $vTmp
					MsgBox(64, 'Info', 'Select: ' & $aLinks[$iInd][1] & ', Href: ' & $aLinks[$iInd][0])
				Case Else
					MsgBox(16, 'Error', 'Error')
			EndSwitch
	EndSwitch
WEnd
 
Верх