Принцип парсинга опр. структуры вывода

yeaahhh

Старатель
Регистрация
8 Май 2008
Сообщения
278
Реакции
11
Ребят, подскажите, пожалуйста, как разбить вывод на нужную структуру.
Парсю тв-программу с через file_get_content.

получил вывод в цикле нужной информации. Но:
Даты всего 4. А событий намного больше. Каким способом можно прикрепить к дате нужное кол-во событий?
Заранее большое спасибо!
 
latteo, не понял вашего решения проблемы..
Мне необходимо сделать привязку даты к группе событий.. но не знаю, как этого сделать..
Чтобы было так:
Дата1
---
события к дате 1

Дата2
-------
события к дате 2

и т.д.

Вот код парсера:
PHP:
set_time_limit(0);
$input=file_get_contents('http://www.soccer.ru/tv/');

$input=iconv("utf-8", "cp1251", $input);

preg_match_all("|<img src=.* border=0 style='padding:3' align=absmiddle></a> <b>(.*)</td>|sUS", $input, $channels);
preg_match_all('|class="greenheader"><td colspan=3> (.*)</td><tr>|sUS', $input, $date);

$k=count($channels[1]);
for($i=0;$i<$k; $i++)
{
echo $date[1][$i];
echo '<br />';
echo $channels[1][$i];
echo '<br />';
}
 
Так?
PHP:
<?
set_time_limit(0);

$input=file_get_contents('http://www.soccer.ru/tv/');

$input=iconv("utf-8", "cp1251", $input);

echo "Парсинг \r\n";
$reg = "/<tr bgcolor=#f3f3f3><td><b>(.*)<\/b><\/td><td>(.*)<\/td>/iU"; 
$res_status = preg_match_all ($reg, $input, $res_array);
if (!$res_status) echo "Возникли ошибки при выполнении поиска совпадений preg_match\r\n";
elseif($res_status == 0) echo "Не найдено совпадений - 0 match\r\n";
else {
	echo "Найдено $res_status совпадений\r\n";
		//print_r ($res_array); //DEV
}
$k=count($res_array[0]);
for($i=0;$i<$k; $i++)
{
	echo $res_array[1][$i];
	echo '<br />';
	echo $res_array[2][$i];
	echo '<br />';
} 


?>
 
С эти у меня проблем нет..
Мне нужно дату выставить в нужное место. чтобы всё было в порядке. а не так как сейчас, всё идёт друг за другом.. понимаете..?)

т.е.:
------------

03.03.11
Все события к этой дате

04.03.11
Все события к этой дате

05.03.11
Все события к этой дате

А сейчас:
----------
03.03.11
Одно событие к 03.03.11

04.03.11
Одно событие к 03.03.11

05.03.11
Одно событие к 03.03.11

Т.е. нужно как-то правильную структуру сделать..
 
Никто не подскажет..?
выдирай сначало даты и программы вместе и потом уже только их распарсивай отдельно
PHP:
<?php
set_time_limit(0);
$input=file_get_contents('http://www.soccer.ru/tv/');

$input=iconv("utf-8", "cp1251", $input);
preg_match_all('|class="greenheader"><td colspan=3> (.*)<tr  bgcolor=56B945|sUS', $input, $data);
$count=count($data[0]);
for($ii=0;$ii<$count;$ii++){
preg_match_all("|<img src=.* border=0 style='padding:3' align=absmiddle></a> <b>(.*)</td>|sUS", $data[0][$ii], $channels);
preg_match_all('|class="greenheader"><td colspan=3> (.*)</td><tr>|sUS', $data[0][$ii], $date);
//print_r($data);

$k=count($channels[1]);
for($i=0;$i<$k; $i++)
{
echo $date[1][$i];
echo '<br />';
echo $channels[1][$i];
echo '<br />';
}  }
?>
 
Многомерные массивы тебя спасут:

PHP:
$arr['2011-01-01'][] = "Событие1";
$arr['2011-01-01'][] = "Событие2";
$arr['2011-01-02'][] = "Событие3";
$arr['2011-01-02'][] = "Событие4";
$arr['2011-01-03'][] = "Событие5";
var_dump($arr);

Когда парсишь свои даты - собирай их вот в такой вот массивчик, а потом уже выводи.
 
Назад
Сверху