Парсер погоды

выводит крякозябры.

#1 15 июля 2012 в 00:03
Вот нарыл грабер погоды, а он собака выводить информацию крякозябрами, помогите заставить его нормально работать.

  1.  
  2. <?php
  3. $file_content = file_get_contents('http://xml.weather.co.ua/1.2/forecast/13639?dayf=5');
  4.  
  5. $xml = simplexml_load_string($file_content);
  6. foreach ($xml -> forecast -> day as $day) {
  7. #определяем знак
  8. if (strpos($day -> t -> min, '-') !== false) {
  9. $sign_char_min = '';
  10. }
  11. else {$sign_char_min = '+';}
  12. if (strpos($day -> t -> max, '-') !== false) {
  13. $sign_char_max = '';
  14. }
  15. else {$sign_char_max = '+';}
  16. switch ($day -> attributes() -> hour) {
  17. case 3:
  18. $time_day = 'ночь';
  19. break;
  20. case 9:
  21. $time_day = 'утро';
  22. break;
  23. case 15:
  24. $time_day = 'день';
  25. break;
  26. case 21:
  27. $time_day = 'вечер';
  28. break;
  29. default:
  30. $time_day = 'none';
  31. break;
  32. }
  33. #определяем напраление ветра
  34. if ($day -> wind -> rumb >= 0 && $day -> wind -> rumb < 20) {
  35. $direct_wind = 'С';
  36. }
  37. else if ($day -> wind -> rumb >= 20 && $day -> wind -> rumb < 35) {
  38. $direct_wind = 'С, С-В';
  39. }
  40. else if ($day -> wind -> rumb >= 35 && $day -> wind -> rumb < 55) {
  41. $direct_wind = 'С-В';
  42. }
  43. else if ($day -> wind -> rumb >= 55 && $day -> wind -> rumb < 70) {
  44. $direct_wind = 'В, С-В';
  45. }
  46. else if ($day -> wind -> rumb >= 70 && $day -> wind -> rumb < 110) {
  47. $direct_wind = 'В';
  48. }
  49. else if ($day -> wind -> rumb >= 125 && $day -> wind -> rumb < 145) {
  50. $direct_wind = 'Ю-В';
  51. }
  52. else if ($day -> wind -> rumb >= 145 && $day -> wind -> rumb < 160) {
  53. $direct_wind = 'Ю, Ю-В';
  54. }
  55. else if ($day -> wind -> rumb >= 160 && $day -> wind -> rumb < 200) {
  56. $direct_wind = 'Ю';
  57. }
  58. else if ($day -> wind -> rumb >= 200 && $day -> wind -> rumb < 215) {
  59. $direct_wind = 'Ю, Ю-З';
  60. }
  61. else if ($day -> wind -> rumb >= 215 && $day -> wind -> rumb < 235) {
  62. $direct_wind = 'Ю-З';
  63. }
  64. else if ($day -> wind -> rumb >= 235 && $day -> wind -> rumb < 250) {
  65. $direct_wind = 'З, Ю-З';
  66. }
  67. else if ($day -> wind -> rumb >= 250 && $day -> wind -> rumb < 290) {
  68. $direct_wind = 'З';
  69. }
  70. else if ($day -> wind -> rumb >= 290 && $day -> wind -> rumb < 305) {
  71. $direct_wind = 'З, С-З';
  72. }
  73. else if ($day -> wind -> rumb >= 305 && $day -> wind -> rumb < 325) {
  74. $direct_wind = 'С-З';
  75. }
  76. else if ($day -> wind -> rumb >= 325 && $day -> wind -> rumb < 340) {
  77. $direct_wind = 'С, С-З';
  78. }
  79. else if ($day -> wind -> rumb >= 340 && $day -> wind -> rumb < 360) {
  80. $direct_wind = 'С';
  81. }
  82. else {$direct_wind = 'Н';}
  83. $l = false;
  84. if(!isset($last_day)) {
  85. $last_day = $day -> attributes() -> date;
  86. $flag_print = true;
  87. }
  88. else if ((string) $last_day === (string) $day -> attributes() -> date) {
  89. $flag_print = false;
  90. }
  91. else {$last_day = $day -> attributes() -> date;
  92. $flag_print = true;
  93. $l = true;
  94. if ($time_day != 'none') {echo '</tr></table>';}
  95. }
  96. ?>
  97. <?php if ($flag_print and $time_day != 'none') { ?>
  98. <table style="float: left; margin: 0 2px 20px 0; border: 1px solid #444;">
  99. <tr>
  100. <td colspan="4" style="border-top: 1px solid #444; text-align: center;" title="Погода на дату">
  101. <?php if ($flag_print) { echo date('d.m.Y', strtotime($day -> attributes() -> date)); } ?>
  102. </td>
  103. </tr>
  104. <tr>
  105. <?php } ?>
  106. <?php if ($time_day != 'none') { ?>
  107. <td style="border: 1px solid #444;">
  108. <div style="text-align: center;">
  109. <p style="margin: 0px; padding: 2px; border-bottom: 1px solid #444; background-color: #eaeaea;" title="Время суток"><?php echo $time_day; ?></p>
  110. <p style="margin: 0px; padding: 2px; border-bottom: 1px solid #444; background-color: #aaaaff; color: white; font-weight: bold;" title="Температура"><?php echo $sign_char_min . $day -> t -> min ?> ... <?php echo $sign_char_max . $day -> t -> max ?></p>
  111. <p style="margin: 0px; padding: 2px; border-bottom: 1px solid #444;"><img src="/sites/all/themes/ogaboga/clipart/<?php echo $day -> pict ?>" alt="<?php echo $day -> pict ?>" /></p>
  112. <p style="margin: 0px; padding: 2px; border-bottom: 1px solid #444;" title="Вероятность осадков"><?php echo $day -> ppcp ?>%</p>
  113. <p style="margin: 0px; padding: 2px; border-bottom: 1px solid #444;" title="Давление"><?php echo $day -> p -> min . '-' . $day -> p -> max ?></p>
  114. <p style="margin: 0px; padding: 2px; border-bottom: 1px solid #444; background-color: #ffa500; color: white; font-weight: bold;" title="Направление ветра"><?php echo $direct_wind ?><br /><?php echo $day -> wind -> min . '-' . $day -> wind -> max ?> м/с</p>
  115. <p style="margin: 0px; padding: 2px; border-bottom: 0px solid #444;" title="Влажность"><?php echo $day -> hmid -> min . '%-' . $day -> hmid -> max ?>%</p>
  116. </div>
  117. </td>
  118. <?php } ?>
  119. <?php } ?>
  120. </tr></table>
  121.  
#2 15 июля 2012 в 00:29
А чем вам instantcms.ru/blogs/moi-blog-360/komponent-pogoda-v-1-0-0.html не подходит?
То же самое. Просто в компоненте те же данные заносятся в базу данных, а в вашем скрипте выводятся напрямую. Минусы при вашем варианте — сайт погоды может быть не доступен, может быть медленная скорость соединения… И там, где вы выводите будет брешь. В компоненте будут браться предыдущие данные.
Если всё же нужно использовать ваш скрипт, то конвертните с utf в ansi. Файлы примера с сайта погоды идут в кодировке utf.
#3 1 октября 2013 в 14:28
Апну данную тему. Подскажите реализовал ли кто вывод погоды как в instantcms.ru/blogs/moi-blog-360/komponent-pogoda-v-1-0-0.html на отдельной страничке только с сайта foreca? Так как моего города допустим нету в вышеуказанном компоненте, а в foreca наиболее правдивая погода по моему городу. Заранее всем спасибо за ответ.
Если реализации нету, то сколько будет стоить реализовать парсер погоды с foreca на 3 дня и 5 дней.
#4 1 октября 2013 в 16:44
Foreca — платный сервис.
#5 1 октября 2013 в 16:48

Апну данную тему. Подскажите реализовал ли кто вывод погоды как в instantcms.ru/blogs/moi-blog-360/komponent-pogoda-v-1-0-0.html на отдельной страничке только с сайта foreca? Так как моего города допустим нету в вышеуказанном компоненте, а в foreca наиболее правдивая погода по моему городу. Заранее всем спасибо за ответ. Если реализации нету, то сколько будет стоить реализовать парсер погоды с foreca на 3 дня и 5 дней.

Avainta
Я только дизайн поменял: aksucity.info/pogoda
#6 1 октября 2013 в 20:05
отписал им, узнаю сколько стоит. Пока параллельно хочу еще узнать а есть ли решения от гисметео реально работающие только?
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.

Похожие темы

Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.