Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Разобрать таблицу на переменные
 
 автор: kis-kis   (19.01.2009 в 16:13)   письмо автору
 
 


$table_weather = file_get_contents("http://www.gismeteo.ru/towns/27612.htm");
$pattern = "|frc='(.*?)<tr><td bgcolor=FFFFFF>Комфорт|is";
$table_weather = preg_match($pattern, $table_weather, $out);

echo "".$out[1]."</table>";



Как можно разобрать полученную таблицу на переменные?
Примерно так, чтобы каждый столбец таблицы состоял из 7 переменных: дата, облачность, осадки, давление, температура, влажность и ветер?

Можно разобрать каждую строку таблицы, примерно так (сорри за длинный код):


$pattern_2 = "|<tr><td bgcolor=F0F0F0>Температура,°C</td><td align=center bgcolor=#\w\w\w\w\w\w>(.*?)</td><td align=center bgcolor=#\w\w\w\w\w\w>(.*?)</td><td align=center bgcolor=#\w\w\w\w\w\w>(.*?)</td><td align=center bgcolor=#\w\w\w\w\w\w>(.*?)</td><td align=center bgcolor=#\w\w\w\w\w\w>(.*?)</td><td align=center bgcolor=#\w\w\w\w\w\w>(.*?)</td><td align=center bgcolor=#\w\w\w\w\w\w>(.*?)</td><td align=center bgcolor=#\w\w\w\w\w\w>(.*?)</td><td align=center bgcolor=#\w\w\w\w\w\w>(.*?)</td><td align=center bgcolor=#\w\w\w\w\w\w>(.*?)</td><td align=center bgcolor=#\w\w\w\w\w\w>(.*?)</td></tr>|is";
$tr_davlenie = preg_match($pattern_2, $out[1], $out_2);

for($i = 1; $i < 12; $i++)
{
echo "".str_replace('<br>', ' ... ', $out_2[$i])."<br>";
}


Можно ли сделать проще? Заранее спасибо.

  Ответить  
 
 автор: kis-kis   (19.01.2009 в 18:30)   письмо автору
3.9 Кб
 
   для: kis-kis   (19.01.2009 в 16:13)
 

Вот, что получилось (вложение).
А как привести дату к виду 0000-00-00?

  Ответить  
 
 автор: kis-kis   (20.01.2009 в 12:12)   письмо автору
 
   для: kis-kis   (19.01.2009 в 18:30)
 

Никто не подскажет?

  Ответить  
 
 автор: Trianon   (20.01.2009 в 12:39)   письмо автору
 
   для: kis-kis   (20.01.2009 в 12:12)
 

а в каком виде она у Вас сейчас?

  Ответить  
 
 автор: kis-kis   (20.01.2009 в 13:05)   письмо автору
 
   для: Trianon   (20.01.2009 в 12:39)
 

День 20 янв

  Ответить  
 
 автор: Trianon   (20.01.2009 в 13:30)   письмо автору
 
   для: kis-kis   (20.01.2009 в 13:05)
 

Год отсюда всяко не получить.
А остальные названия месяцев как сокращены?

<?php
   $t 
"2 мар";
   
$v explode(' '$t);
   if(
preg_match(
      
'/^(янв)|(фев)|(---)|(---)|(---)|(---)|(---)|(---)|(---)|(---)|(ноя)|(дек)$/',
      
$v[1], $m))
          
$v[1] = max(array_keys($m));
   
$v[2] = $v[0];
   
$v[0] = '1995';
   
$r vsprintf("%04d-%02d-%02d"$v);
   echo 
$r;
?>

  Ответить  
 
 автор: kis-kis   (20.01.2009 в 13:49)   письмо автору
 
   для: Trianon   (20.01.2009 в 13:30)
 

Не знаю как это проверить, но думаю также из трех букв (корректировку можно потом сделать).
Предложенный мною вариант подходит для погоды на три ближайших дня, а чтобы сделать на 10 необходимы дополнения, т.к. таблица прогноза на следующие дни отличается от данного все 2 словами (было: Температура,°C, стало Температура воздуха, °C и было: Влажность,%, стало Относительная влажность,%. Можно ли это учесть в данном шаблоне? Спасибо.

  Ответить  
 
 автор: Trianon   (20.01.2009 в 13:53)   письмо автору
 
   для: kis-kis   (20.01.2009 в 13:49)
 

с ошибками у Вас шаблон. взять хотя бы bgcolor=FFFFFF . Нет там такого. Да и нигде не может быть.

  Ответить  
 
 автор: kis-kis   (20.01.2009 в 14:08)   письмо автору
 
   для: Trianon   (20.01.2009 в 13:53)
 

Поверьте мне, это не у меня ошибка в шаблоне, а на gismeteo.
Есть ли еще ошибки?

  Ответить  
 
 автор: Trianon   (20.01.2009 в 14:20)   письмо автору
 
   для: kis-kis   (20.01.2009 в 14:08)
 

Тогда, пардон.
Парсить код gismeteo у меня желания нет. У него, кстати, тоже.

  Ответить  
 
 автор: kis-kis   (20.01.2009 в 14:32)   письмо автору
 
   для: Trianon   (20.01.2009 в 14:20)
 

>>У него, кстати, тоже.
Вы что имели ввиду?

А откуда Вы считаете лучше парсить прогноз погоды?

  Ответить  
 
 автор: Trianon   (20.01.2009 в 14:51)   письмо автору
 
   для: kis-kis   (20.01.2009 в 14:32)
 

>>>У него, кстати, тоже.
>Вы что имели ввиду?
Только то, что сказал.
Что владельцы gismeteo не считают несогласованную с ними публикацию данных сервера корректным использованием их ресурса.
Насколько я себе представляю, при согласованной публикации, вопросы предоставления информации в удобном виде они берут на себя.

  Ответить  
 
 автор: kis-kis   (20.01.2009 в 15:02)   письмо автору
 
   для: Trianon   (20.01.2009 в 14:51)
 

Понял, Вы про авторское право...

Какой ресурс Вы считаете подходящим для получения погоды?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования