|
|
|
| Здравствуйте уважаемые программисты. Пишу новостной граббер, возник очередной вопрос. Как оптимальнее всего вытащить из стнаницы данные. Значимая часть кода:
<tr>
<td style="padding: 10 0 0 15">
<TABLE border=0 cellpadding="0" cellspacing="0" style='border:none' width="100%" bordercolor="#FF9900">
<tr>
<td><img src="/dealers/images/arrow.gif" align="absmiddle"><a href='index.php?page=news&module=parts&action=more&newsId=252' class="linkb">Тестирование продавцов одежды BRP</a> <span class="text">20.06.2008 12:35</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="padding: 10 0 0 15">
<TABLE border=0 cellpadding="0" cellspacing="0" style='border:none' width="100%" bordercolor="#FF9900">
<tr>
<td><img src="/dealers/images/arrow.gif" align="absmiddle"><a href='index.php?page=news&module=parts&action=more&newsId=251' class="linkb">Спец предложение на востановленные LONG BLOCK для 4 tec гидроциклов до 17 июня</a> <span class="text">16.06.2008 14:48</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="padding: 10 0 0 15">
<TABLE border=0 cellpadding="0" cellspacing="0" style='border:none' width="100%" bordercolor="#FF9900">
<tr>
<td><img src="/dealers/images/arrow.gif" align="absmiddle"><a href='index.php?page=news&module=parts&action=more&newsId=250' class="linkb">Техническая информация по технике BRP</a> <span class="text">16.06.2008 11:33</span></td>
</tr>
</table>
</td>
</tr>
|
Из полученных данных хочу сформировать массив, к примеру:
Mass[0] = { "20.06.2008 12:35", "Тестирование продавцов одежды BRP", "'index.php?page=news&module=parts&action=more&newsId=252"}
Mass[1] = {"16.06.2008 14:48", "Спец предложение на востановленные LONG BLOCK для 4 tec гидроциклов до 17 июня", "index.php?page=news&module=parts&action=more&newsId=251"}
. . . . . . . . . .
Подскажите, пожалуйста, как оптимальней всего с помощью регулярного выражения выдернуть данные.
Заранее благодарен. | |
|
|
|
|
|
|
|
для: Icen
(26.06.2008 в 10:10)
| | Ну если все точно также будет, как вы привели пример html, то
<?php
$text='html';
preg_match_all("#<a href='(.+?)' class=\"linkb\">(.+?)</a>.*?<span class=\"text\">(.+?)</span>#is",$text,$out);
unset($out[0]);
print_r($out);
?>
| Переменная $text - html код. | |
|
|
|
|
|
|
|
для: AcidTrash
(26.06.2008 в 10:30)
| | Спатибо огромное, все замечательно работает! :) | |
|
|
|
|
|
|
|
для: AcidTrash
(26.06.2008 в 10:30)
| | Здравствуйте. Вот делаю по аналогично для:
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="padding:0px 0px 0px 0px" height="19px" width="83px" align="center" valign="middle">
<a href="/dealersNews/garantiya_poctanovki/" class="newsDealersDate">30.05.2008</a>
</td>
<td align="left" style="padding:0px 0px 0px 10px"><a href="/dealersNews/garantiya_poctanovki/" class="headerDealersNews">Форма постановки на гарантию гидроцикла SQ 800 JM</a>
</td>
</tr>
</table>
|
написал для этого кусочка:
preg_match_all("#<a href='(.+?)' class=\"newsDealersNews\">(.+?)</a> class=\"newsDealersDate\">(.+?)</a>#is",$NewsPage,$out);
|
Почемуто не работает, видимо как обычно что то не учёл.
P.S.: Прошу прощения за детские вопросы.. | |
|
|
|
|
|
|
|
для: Icen
(01.07.2008 в 12:53)
| |
<pre>
<?php
$NewsPage='<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="padding:0px 0px 0px 0px" height="19px" width="83px" align="center" valign="middle">
<a href="/dealersNews/garantiya_poctanovki/" class="newsDealersDate">30.05.2008</a>
</td>
<td align="left" style="padding:0px 0px 0px 10px"><a href="/dealersNews/garantiya_poctanovki/" class="headerDealersNews">Форма постановки на гарантию гидроцикла SQ 800 JM</a>
</td>
</tr>
</table>';
preg_match_all("#<a.*?class=\"newsDealersDate\">(.+?)</a>.*?<a href=\"(.+?)\" class=\"headerDealersNews\">(.+?)</a>#is",$NewsPage,$out);
unset($out[0]);
print_r($out);
?>
|
| |
|
|
|
|
|
|
|
для: Icen
(01.07.2008 в 12:53)
| | Что то аналогии не вижу. В оригинальном тексте сначала идёт класс "newsDealersDate", затем "newsDealersDate", в регулярном выражении наоборот + там же 2 закрывающих тега "</a>" на один открывающий. | |
|
|
|