Понадобилась снова помощь по регулярным выражениям...
Имеем исходный код страницы (это только часть, оно повторяется по той же структуре далее):
Src.txt - Нажмите для показа
Код:

<div class="vldescbox">
<div class="vltitle">
<div class="vlshortTitle">
<a href="/watch?v=UiPhfbZsS54" title="WTTC 2008 table tennis best points.... enjoy">WTTC <b>2008 table tennis</b> best points.... enjoy</a>
</div>
<div class="vllongTitle">
<a href="/watch?v=UiPhfbZsS54" title="WTTC 2008 table tennis best points.... enjoy">WTTC <b>2008 table tennis</b> best points.... enjoy</a>
</div>
</div>
<div class="vldesc">
the WTTC <b>2008 table tennis</b> best points.... enjoy <b>...</b> WTTC <b>2008 table tennis</b> best points extreme ma lin <b>...</b>
</div>
</div>
<div class="vlclearaltl"></div>
</div>
<div class="vlfacets">
<div class="vladded">
<span class="grayText">Added:</span> 3 months ago<br/>
</div>
<div><span class="grayText vlfromlbl">From:</span><span class="vlfrom"><a href="/user/kioka2" >kioka2</a></span></div>
<div class="clearL"></div>
<span class="grayText">Views:</span> 59,747<br/>
<div class="video-thumb-duration-rating">
<div>
<img class="ratingVS ratingVS-5.0" alt="4.9" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" />
</div>
<div class="runtime">07:26</div>
</div>
<div class="clear"></div>
<div class="vlcategory">
<span class="smgrayText">More in</span> <a href="/results?search_category=17&search_query=table%20tennis%202008" >Sports</a>
</div>
</div>
<div class="vlclearaltl"></div>
</div> <!-- end vEntry -->
</div>
<div class="vlclear"></div>
<div class="vlcell" style="width:24.9%">
<div class="vlentry" >
<div class="vlcontainer"><div class="v120WideEntry"><div class="v120WrapperOuter"><div class="v120WrapperInner"><a href="/watch?v=EcIsmXhduVc" ><img src="http://i.ytimg.com/vi/EcIsmXhduVc/default.jpg" class="vimg120" title="Highlights of the 2008 Asian Olympic Table Tennis Quali" alt="video"></a><div class="addtoQL90"><a href="#" ql="EcIsmXhduVc" title="Add Video to QuickList"><img class="QLIconImg" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" border="0"
onclick="clicked_add_icon(this, this.parentNode.getAttribute('ql'), 0);_hbLink('QuickList+AddTo','na');return false;"
onmouseover="mouseOverQuickAdd(this, this.parentNode.getAttribute('ql'))"
onmouseout="mouseOutQuickAdd(this, this.parentNode.getAttribute('ql'))"></a><div class="hid quicklist-inlist">in <a href="/watch_queue?all">QuickList</a></div></div>
</div></div>
</div>
<div class="vldescbox">
<div class="vltitle">
<div class="vlshortTitle">
<a href="/watch?v=EcIsmXhduVc" title="Highlights of the 2008 Asian Olympic Table Tennis Quali">Highlights of the <b>2008</b> Asian Olympic <b>Table Tennis</b> Quali</a>
</div>
<div class="vllongTitle">
<a href="/watch?v=EcIsmXhduVc" title="Highlights of the 2008 Asian Olympic Table Tennis Quali">Highlights of the <b>2008</b> Asian Olympic <b>Table Tennis</b> Quali</a>
</div>
</div>
<div class="vldesc">
<span id="BeginvidDescEcIsmXhduVc">
highlights of the <b>2008</b> Asian Olympic <b>Table Tennis</b> Qualification. You will enjoy it! It concludes Wang Nan and Wang Liqin <b>...</b>
</span>
<span id="RemainvidDescEcIsmXhduVc" style="display: none">In this video you can see the highlights of the 2008 Asian Olympic Table Tennis Qualification. You will enjoy it! It concludes Wang Nan and Wang Liqin.</span>
<span id="MorevidDescEcIsmXhduVc" class="smallText">(<a href="#" class="eLink" onclick="showDiv('RemainvidDescEcIsmXhduVc'); hideDiv('MorevidDescEcIsmXhduVc'); hideDiv('BeginvidDescEcIsmXhduVc'); showDiv('LessvidDescEcIsmXhduVc'); return false;">more</a>)</span>
<span id="LessvidDescEcIsmXhduVc" style="display: none" class="smallText">(<a href="#" class="eLink" onclick="hideDiv('RemainvidDescEcIsmXhduVc'); hideDiv('LessvidDescEcIsmXhduVc'); showDiv('BeginvidDescEcIsmXhduVc'); showDiv('MorevidDescEcIsmXhduVc'); return false;">less</a>)</span>
</div>
</div>
Нужно получить значения в массив либо между
<div class="vldesc"> и
</div>, либо между
<div class="vldesc"><span id="BeginvidDesc.*?"> и
</span>.
Оно может встречаться и так и так, нужно получить текст описании роликов (это с YouTube исходник).
Вот что должно быть на выходе:
Код:

$avArray[0] = "WTTC <b>2008 table tennis</b> best points.... enjoy <b>...</b> WTTC <b>2008 table tennis</b> best points extreme ma lin <b>...</b>"
$avArray[1] = "highlights of the <b>2008</b> Asian Olympic <b>Table Tennis</b> Qualification. You will enjoy it! It concludes Wang Nan and Wang Liqin <b>...</b>"
У меня получилось сделать только так:
Код:

#include <Array.au3>
$sSource = FileRead("Src.txt")
$avArray = StringRegExp($sSource, '(?i)(?s)<div class="vldesc">.*?[(<span id="BeginvidDesc.*?">|)](.*?)</span>', 3)
_ArrayDisplay($avArray)
Как видно, добавляется в начало
span id="BeginvidDesc....">, а иногда и в конце тоже добавляются теги. Реально ли одно-разовым вызовом StringRegExp (и без дополнительных циклов) получить то что нужно?
Алексей Н.,
Цитата Алексей Н.:
Есть ли возможность принудительно завершить скрипт через какое-то время, если не были приняты никакие действия? »
|
См. функцию
_Timer_SetTimer() в справке.