Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > Выжрать инфу из странички


Автор: CyClon 8.3.2006, 10:36
Код
                              <tr>
                                <td align=right valign="top" class='mystrong'><a name="3"></a>3.&nbsp;</td>
                                <td valign="top"><span class="style10"><img src="http://img.combats.ru/i/klan/Stalkers.gif" width="24" height="15" align="absbottom">
                                &nbsp;<a href="http://stalkers.ru" target=_blank title="...
2:09: На здоровье
1:38: Итоги
0:57: Пофлудим по-новому...
0:42: Не забыли - поздравляют...
0:15: Когда-нибудь...
//2006.03.08 09:55:03//">Stalkers // новость &quot;Ныне и присно...&quot; (2:15)</a> </span></td>
                                <td align=right valign="top"><b>605</b></td>
                                <td align=right valign="top"><b>12976</b></td>
                                <td rowspan=2 align="right"><input type="checkbox" name="stalkers.ru">
                                    <a href="detail.pl?d=stalkers.ru">»»</a></td>
                              </tr>


Как с помощью PHP выдрать из этого всего следующие данные:

3 || Stalkers || http://stalkers.ru || title из ссылки || 605 || 12976

Просто есть сайт http://top.combats.ru/1.html - Это как-бы ТОП сайтов (Кто играл или играет в БК, тот знает). Мне нужно эту инфу оттуда выдирать и записыать в БД. Ну, а из БД соответственно выводить на сайте. Мне нужно место (3), название клана (Stalkers), сайт (http://stalkers.ru), title из ссылки (проблема в том, что он на несколько строк тянется, хосты (605) и визиты (12976).

В общем я сначала думал сделать с помощью file и foreach, но проблема в том, что title растягивается на несколько строк. Как нужно? fopen + preg_match_all ? И какая маска будет, не соображу, строк то много... В общем требуется HELP.

Автор: CyClon 8.3.2006, 15:02
Есть регулярка:

Код
preg_match("#<a name=\"(.*)\">(?:.*)http://img.combats.ru/i/klan/(.*).gif(?:.*)<a href=\"(.*)\"(?:.*)title=\"(.*)\">(.*)<\/a>(?:.*)<b>(.*)<\/b>(?:.*)<b>(.*)<\/b>(?:.*)<font color=green>(.*)</font>(?:.*)<FONT color=\#800000>(.*)<\/SMALL>(?:.*)<FONT color=\#800000>(.*)<\/SMALL>#isU", $matches[0][$i], $items);


Она не берет все сайты. Как сделать чтобы могли отсутствовать следущие участки:

1. http://img.combats.ru/i/klan/(.*).gif
2. <font color=green>(.*)</font>

Т.е. этих участков кода может не существовать и регулярка эта захватывать их не будет. А мне нада чтобы они захватывала все сайты, но там где этих участков нет, писала в $matches[0][$i] 0 или пустое значение. Думаю вы меня поняли.

И еще проблема... Если между <font color=green>(.*)</font> написано +число, то выводит, а если -число, то не заносит в массив.

Я пробовал из

Код
http://img.combats.ru/i/klan/(.*).gif


сделать

Код
(http://img.combats.ru/i/klan/(.*).gif)?


Но результата ноль smile(( Вместо одного индекса создает два, но пустых. Для всех сайтов. Даже для тех, где есть http://img.combats.ru/i/klan/.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)