|
|
|
| Уверен, что тем с таким названием (точнее, с подобными вопросами) очень много, но ничего для себя я так и не нашел (честно пользовался поиском). В рег.выр.-ах, мягко говоря, не силен, сейчас учу, но почему-то с трудом продвигается =\
Итак...
Есть некий HTML код, а в нем две таблицы идущие почти подряд (разделены br-ом)
перавя таблица выглядит так:
<table width="90%" cellpadding="0" cellspacing="0" border=0 align="center" class="schedule">
<!--- Очень много строк=) --->
</table>
|
Вторая такая же, но class="common" т.е.
<table width="90%" cellpadding="0" cellspacing="0" border=0 align="center" class="common">
<!--- Очень много строк=) --->
</table>
|
Обе не содержат вложенных таблиц, обе таблицы встречаются в коде единожды
Так вот из них надобно вырезать теги <table....> и </table> и запихнуть в переменные $a и $b соответственно
Увы это не все.
В первой таблице встречаются такие ячейки
<!--- Начало заголовка таблицы, самый первый ряд --->
<tr>
<td>Случайное_слово1</td>
<td>Случайное_слово2</td>
<td>Неслучайное_слово1</td>
<td>Неслучайное_слово2</td>
<td>Неслучайное_слово3</td>
<td> </td>
</tr>
<!--- Конец заголовка таблицы. Далее везде=) --->
|
Все пять слов могут содержать буквы кириллицы, пробелы и знаки пунктуации. Неслучайные слова мне уже известны, случайные слова нужно занести в переменные $с и $d а заголовок удалить к чёртовой матери из переменной $a (первая таблица)
Полный код страницы в аттаче. Первая таблица начинается на 116-й строке, вторая на 417-й.
Искренне надеюсь на помощь! | |
|
|
|
|
|
|
|
для: Гончий пёс
(16.06.2007 в 16:32)
| | если Вы расчитываете выполнить всё за одно обращение к preg - не стоит.
Если нет - делите задачу на несколько, и решайте по очереди. | |
|
|
|
|
|
|
|
для: Trianon
(16.06.2007 в 16:53)
| | Нет, ну за одно обращение чисто теоретически может быть и можно, но это, я думаю, непозволительная роскошь... | |
|
|
|
|
|
|
|
для: Гончий пёс
(16.06.2007 в 17:25)
| | >Так вот из них надобно вырезать теги <table....> и </table> и запихнуть в переменные $a и $b соответственно
Зачем вырезать? не проще просто подставить их в свой скрипт?
И вообще, Вам просто нужно сформировать свою страницу с расписанием поездов и всё? Или ещё что? | |
|
|
|
|
|
|
|
для: mr Bin
(16.06.2007 в 18:23)
| | Зачем вырезать "тейблы"? Ну во-первых, мне в конечном итоге нужно склеитиь несколько таблиц в одну (расписание-то не на одной странице), так что не надо мне "ихних" тейблов=) Да и потом мне (ну, вообще-то вам, а не мне=)) нужно будет выкидывать еще и заголовок таблицы: быть может "выкидывание" потом будет проще привязать к началу строки (^) если делать рег.выр.-ами или вырезать первые n строк, где будет описан заголовок (а их 7). Хотя с тем же успехом можно вырезать 8 первых строк, а потом
$a = str_replace("</table>", "", $a);
|
и тогда вырезание тейблов и заголовка вообще выходит из "юрисдикции" рег.выр.-ов.
В общем и целом ситуация такова: Есть произвольное число страниц, на которых расположено расписание. Нужно извлечь расписание, из произвольного числа страниц склеить одну таблицу и вывести ее на экран. Если есть другие подходы, подскажите - буду только рад. | |
|
|
|
|
|
|
|
для: Гончий пёс
(16.06.2007 в 23:50)
| |
<?php
// Экспорт расписания с tutu.ru
// Массив с адресами, по которым нужно пройтись
$adr = array('http://www.tutu.ru/rasp.php?st1=40306&st2=40406','http://www.tutu.ru/rasp.php?st1=40306&st2=40406&list=1','http://www.tutu.ru/rasp.php?st1=40306&st2=40406&list=2');
echo '<table border=1>'; // Начинаем таблицу
foreach ($adr as $i => $value) {
$content = file_get_contents($value); // Сюда приходят адреса из массива
// Регулярка для выборки нужных элементов
$pattern = "|<td><a href=\"([^<]+)\">([^<]+)</a></td>\r\n<td><a href=\"([^<]+)\">([^<]+)</a></td>\r\n<td>([^<]+)</td>\r\n<td><a href=\"([^<]+)\">([^<]+)</a></td>\r\n<td><a href=\"([^<]+)\">([^<]+)</a></td>[\s]*|is";
preg_match_all($pattern, $content, $out);
for ($i = 0; $i < count($out[0]); $i++) { echo '<tr><td>'.$out[2][$i].'</td><td>'.$out[4][$i].'</td><td>'.$out[5][$i].'</td><td>'.$out[7][$i].'</td><td>'.$out[9][$i].'</td></tr>'; }
}
echo '</table>';
?>
|
если будут вопросы - задавайте. | |
|
|
|
|
|
|
|
для: mr Bin
(17.06.2007 в 09:56)
| | А как выдернуть погоду и поместить ее в массив?
http://www.gismeteo.ru/towns5/27333.htm | |
|
|
|
|