Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с регулярным выражением, все между тегами <tr>(.*)</tr> 
:(
    Опции темы
JFox
Дата 7.5.2010, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 7.5.2010

Репутация: нет
Всего: нет



Здравствуйте, помогите пожалуйста составить регулярное выражение, которое будет вытаскивать из кода все данные, находящиеся между тегами <tr>(.*)</tr>
Пробовал так:
Код

<?
$html = file_get_contents('http://www.ganjawars.ru/stats-objects.php?x=52&y=53');
preg_match_all( "#<tr>(.*?)<\/tr>#iU", $html, $result );
print_r($result);
?>


но почему то не работает(

вот вырезка из странички, которую парсинм:
Код

<table class=wb align=center cellspacing=0 cellpadding=3>
<tr>
<td class=wb align=center><b>1</b></td>
<td class=wb><a href=/syndicate.php?id=4843>#4843</a> Третий синдикат.</td>
<td class=wb align=center>1,903.52</td>
<td class=wb align=center>$17,594</td>
</tr><tr>


нужно поулчить:
 
Array[0] ( 
[0] =>4843
[1] =>Третий синдикат 
[2] =>1,903.52
[3] =>17,594
)
Array[1] ( 
[0] =>.....
[1] =>..... 
[2] =>.....
[3] =>.....
)
и так далее.

И на этой же странице вторая табличка, полагаю принцип один, но мало ли
Код

<tr>
<td class=wb align=center><b>1</b></td>
<td class=wb><a href=/syndicate.php?id=4843><img src=http://images.ganjawars.ru/img/synds/4843.gif width=20 height=14 border=0></a><a href=/object.php?id=78041>Плантация</a> [31], <a href=/info.php?id=255324><b>CHUVAAK</b></a></td>
<td class=wb align=center>1,650.69</td>
<td class=wb align=center>$495,207</td>
</tr


Array[1] ( 
[0] =>4843.gif
[1] =>Плантация 
[2] =>255324
[3] =>CHUVAAK
[1] =>Плантация 
[2] =>1,650.69
[3] =>495,207
) и так все данные , пока не кончится таблица

Это сообщение отредактировал(а) JFox - 7.5.2010, 18:48
PM MAIL   Вверх
WebAngel
Дата 7.5.2010, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 6.5.2010

Репутация: нет
Всего: нет



Кто сказал, что тебе нада tr? тебе нужно тоже самое но для td.

А чтобы получить:

Array[0] ( 
[0] =>4843
[1] =>Третий синдикат 
[2] =>1,903.52
[3] =>17,594
)

результат обработать напильником.

можешь еще погуглить на тему: DOMDocument, simplexml_import_dom и xpath

Это сообщение отредактировал(а) WebAngel - 7.5.2010, 19:26
PM   Вверх
JFox
Дата 7.5.2010, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 7.5.2010

Репутация: нет
Всего: нет



WebAngel, мне нужно вытащить этот блок
Код

<tr>
<td class=wb align=center><b>1</b></td>
<td class=wb><a href=/syndicate.php?id=4843>#4843</a> Третий синдикат.</td>
<td class=wb align=center>1,903.52</td>
<td class=wb align=center>$17,594</td>
</tr>

в отдельный массив Array[1], следующий аналогичный блок в Array[2] и  т.д. , если указывать td вместо tr, все данные идут одной большой кучей, я думал что в данном случае именно tr должен быть "стартом и финишем"..(

Мне потом надо будет все внести в бд, следовательно содержимое <tr>*</tr> будет одной записью(надеюсь понятно написал smile

И подскажите, если не сложно, как можно вытащить только тот блок, в котором есть определенная надпись (например id=4843)


Это сообщение отредактировал(а) JFox - 7.5.2010, 20:21
PM MAIL   Вверх
brother79
Дата 11.5.2010, 05:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 18.8.2009

Репутация: нет
Всего: 6



Цитата(JFox @  7.5.2010,  22:39 Найти цитируемый пост)
preg_match_all( "#<tr>(.*?)<\/tr>#iU", $html, $result );


Но вообще-то всё правильно составленно и должно работать. Я только обычно ещё экранирую <>, т.е. они вроде тоже что-то означали, типа граници слова кажется, надо смотреть.


--------------------
PM MAIL WWW   Вверх
SelenIT
Дата 11.5.2010, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 8
Всего: 401



brother79, сами по себе <> ничего не означают. Но иногда меняют смысл скобок: (?>...) - однократная незахватывающая проверка, (?<=) - проверка предшествующего текста.

JFox, зачем в реге двойная инверсия жадности (в .*? + модификатор U)? И еще модификатор s нужен, т.к. по умолчанию точка не ловит перевод строки.
 
Цитата(WebAngel @  7.5.2010,  19:24 Найти цитируемый пост)
можешь еще погуглить на тему: DOMDocument, simplexml_import_dom и xpath

Поддерживаю. Для нетривиального парсинга неизвестного HTML это более адекватные средства, чем реги.




--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0655 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.