Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Связка значений с картинками

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: 1 = 1.jpg
Staxxx
Отправлено: 11 Мая, 2015 - 14:43:24
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Добрый день, я создал парсер на php, а так же страницу для выдачи, тоже на php, теперь передо мной стоит задача связать 2 кода в 1.

Код парсера: (со страницы лотерее нужно вытащить результаты выйгрышей) + вывожу текущее время
PHP:
скопировать код в буфер обмена
  1. <html>
  2. <head><meta http-equiv="Refresh" content="600" />
  3. <title></title>
  4. <script type="text/javascript">
  5. function clock() {
  6. var d = new Date();
  7. var month_num = d.getMonth()
  8. var day = d.getDate();
  9. var hours = d.getHours();
  10. var minutes = d.getMinutes();
  11. var seconds = d.getSeconds();
  12.  
  13. month=new Array("января", "февраля", "марта", "апреля", "мая", "июня",
  14. "июля", "августа", "сентября", "октября", "ноября", "декабря");
  15.  
  16. if (day <= 9) day = "0" + day;
  17. if (hours <= 9) hours = "0" + hours;
  18. if (minutes <= 9) minutes = "0" + minutes;
  19. if (seconds <= 9) seconds = "0" + seconds;
  20.  
  21. date_time = "Сегодня - " + day + " " + month[month_num] + " " + d.getFullYear() +
  22. " г.&nbsp;&nbsp;&nbsp;Текущее время - "+ hours + ":" + minutes + ":" + seconds;
  23. if (document.layers) {
  24.  document.layers.doc_time.document.write(date_time);
  25.  document.layers.doc_time.document.close();
  26. }
  27. else document.getElementById("doc_time").innerHTML = date_time;
  28.  setTimeout("clock()", 1000);
  29. }
  30. </script>
  31. </head>
  32.  
  33. <body>
  34.  
  35. <span id="doc_time">
  36.  Дата и время
  37. </span>
  38.  
  39. <script type="text/javascript">
  40.  clock();
  41. </script>
  42. <p>
  43. <?PHP
  44.         #$homepage = file_get_contents('http://euromillions.com/en/'); file_put_contents('index999.htm',$homepage);
  45.        
  46.         $str = file_get_contents('http://euromillions.com/en/');
  47.         preg_match_all('|<(span class="greenball")+>(.*)</(span)+>|U',$str,  $green, PREG_PATTERN_ORDER);
  48.         preg_match_all('|<(span class="redball")+>(.*)</(span)+>|U',$str,  $red, PREG_PATTERN_ORDER);
  49.         preg_match_all('|<(p class="jackpotValueGrey")+>(.*)</(p)+>|U',$str,  $size, PREG_PATTERN_ORDER);
  50.        
  51.         echo "Euromillions Jackpot size is <font color=green><b>" . $size[0][0] . "</b></font>" .
  52.                 $green[0][0] . ", " . $green[0][1] . ", " . $green[0][2] . ", " . $green[0][3] . ", " . $green[0][4] .
  53.                 "<font color=red><b>" . $red[0][0] . ", " . $red[0][1] . ". " ."</b></font><br>";
  54.  
  55.        
  56. ?>
  57. </p>
  58.  
  59.  
  60. </body>
  61. </html>
  62.  


так же мною создан сайт для вывода результатов - santeh-spec.ru

Результаты - шары которые выпали в лотерее - обведены в кружки и звездочи, нарисованы картинки(50 штук для кружков, и 11 для звездочек).

код страницы представлен ниже:
PHP:
скопировать код в буфер обмена
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Euromillions</title>
  6. <style type="text/css">
  7. <!--
  8. .стиль1 {
  9.         font-size: 24px
  10. }
  11. .стиль3 {font-size: 24px; font-weight: bold; }
  12. body {
  13.         background-color: #FBFBFB;
  14.         background-image: url(images/fon.jpg);
  15.         background-repeat: no-repeat;
  16. }
  17. .стиль5 {
  18.         font-size: 30px;
  19.         font-weight: bold;
  20. }
  21. -->
  22. </style>
  23. </head>
  24.  
  25. <body>
  26.  
  27. <table width="1500" border="0">
  28.   <!--DWLayoutTable-->
  29.   <tr>
  30.     <td width="733" height="32"><div align="center" class="стиль1"></div></td>
  31.     <td colspan="2"><div align="center"></div></td>
  32.     <td width="357"><!--DWLayoutEmptyCell-->&nbsp;</td>
  33.   </tr>
  34.   <tr>
  35.     <td><!--DWLayoutEmptyCell-->&nbsp;</td>
  36.     <td colspan="2"><div align="center"><span class="стиль5">Euromillions</span></div></td>
  37.     <td><!--DWLayoutEmptyCell-->&nbsp;</td>
  38.   </tr>
  39.   <tr>
  40.     <td><!--DWLayoutEmptyCell-->&nbsp;</td>
  41.     <td width="198"><div align="right" class="стиль3">20:41</div></td>
  42.     <td width="194"><span class="стиль3">:57</span></td>
  43.     <td><!--DWLayoutEmptyCell-->&nbsp;</td>
  44.   </tr>
  45.   <tr>
  46.     <td><!--DWLayoutEmptyCell-->&nbsp;</td>
  47.     <td colspan="2"><div align="center" class="стиль3">ВТОРНИК</div></td>
  48.     <td><!--DWLayoutEmptyCell-->&nbsp;</td>
  49.   </tr>
  50.   <tr>
  51.     <td><!--DWLayoutEmptyCell-->&nbsp;</td>
  52.     <td colspan="2"><div align="center"><span class="стиль3">21 Января 2015</span></div></td>
  53.     <td><!--DWLayoutEmptyCell-->&nbsp;</td>
  54.   </tr>
  55. </table>
  56. <table width="1659" border="0" cellspacing="15">
  57.   <tr>
  58.     <td width="210" height="300"><p>&nbsp;</p></td>
  59.     <td width="266"><img src="resultsR/1.jpg" alt="" width="266" height="287" align="right" longdesc="http://santeh-spec.ru/resultsR/1.jpg" /></td>
  60.     <td width="266"><div align="center"><img src="resultsR/1.jpg" alt="" width="266" height="287" longdesc="http://santeh-spec.ru/resultsR/1.jpg" /></div></td>
  61.     <td width="266"><div align="center"><img src="resultsR/1.jpg" alt="" width="266" height="287" longdesc="http://santeh-spec.ru/resultsR/1.jpg" /></div></td>
  62.     <td width="266"><div align="center"><img src="resultsR/1.jpg" alt="" width="266" height="287" longdesc="http://santeh-spec.ru/resultsR/1.jpg" /></div>    </td>
  63.     <td width="268"><img src="resultsR/1.jpg" alt="" width="266" height="287" longdesc="http://santeh-spec.ru/resultsR/1.jpg" /></td>
  64.   </tr>
  65. </table>
  66. <table width="1877" border="0" cellspacing="5">
  67.   <tr>
  68.     <td width="558" height="327">&nbsp;</td>
  69.     <td width="368"><div align="center"><img src="resultsR/2.jpg" width="368" height="387" longdesc="http://santeh-spec.ru/resultsR/2.jpg" /></div></td>
  70.     <td width="379"><div align="center"><img src="resultsR/2.jpg" alt="" width="368" height="387" longdesc="http://santeh-spec.ru/resultsR/2.jpg" /></div></td>
  71.     <td width="539">&nbsp;</td>
  72.   </tr>
  73. </table>
  74. <table width="1622" border="0"><!--DWLayoutTable-->
  75.   <tr>
  76.     <td width="758" height="46" rowspan="2"><div align="center" class="стиль1"></div></td>
  77.     <td width="328"><div align="center" class="стиль3"></div></td>
  78.     <td width="522" rowspan="2"><!--DWLayoutEmptyCell-->&nbsp;</td>
  79.   </tr>
  80.   <tr>
  81.     <td><div align="center" class="стиль3">Результат тиража:</div></td>
  82.   </tr>
  83.   <tr>
  84.     <td><!--DWLayoutEmptyCell-->&nbsp;</td>
  85.     <td><div align="center"><span class="стиль3">ВТОРНИК</span></div></td>
  86.     <td><!--DWLayoutEmptyCell-->&nbsp;</td>
  87.   </tr>
  88.   <tr>
  89.     <td><!--DWLayoutEmptyCell-->&nbsp;</td>
  90.     <td><div align="center"><span class="стиль3">21 Января 2015</span></div></td>
  91.     <td><!--DWLayoutEmptyCell-->&nbsp;</td>
  92.   </tr>
  93. </table>
  94. </body>
  95. </html>
  96.  


теперь главный вопрос для знатоков:

как мне привязать значения которые выдает парсер (они хранятся в массивах, соответственно кружки в одном звездочки в другом) к моим изображениям, залитым на сайт, что бы когда я получал выдачу с парсера у меня картинки менялись соответственно - 1 = 1.jpg, 22 = 22.jpg и т.д.

остальное все сделано, пока разрабатываю функцию со временем автоматического парсинга (пока работает только 1 раз при загрузке страницы), каждый четный час страница будет парсить сайт евромилионс, и выводить результаты на мой сайт.

буду рад любой помощи, а так же готовые коды выложу на ваш форум!

(Отредактировано автором: 11 Мая, 2015 - 14:46:07)

 
 Top
Bio man
Отправлено: 11 Мая, 2015 - 23:12:45
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




Ну как то так:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php foreach ($redBalls as $redBall): ?>
  2. <td width="266">
  3.   <div align="center">
  4.     <img src="resultsR/<?= $redBall ?>.jpg" alt="" width="266" height="287" longdesc="http://santeh-spec.ru/resultsR/<?= $redBall ?>.jpg" />
  5.   </div>
  6. </td>
  7. <?php endforeach ?>


Главное передать шаблону нужные переменные ($redBalls итд).

(Отредактировано автором: 11 Мая, 2015 - 23:13:18)

 
 Top
Staxxx
Отправлено: 06 Июня, 2015 - 14:49:21
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Все оказалось намного проще, чем я думал. В общем, использовав свойства интерполяция, можно передавать значения, полученные с другой страницы.


$str = file_get_contents('http://euromillions.com/en/');

так как парсить HTML регулярками неблагодарное дело,
решить эту задачу можно предусмотрев множество вариантов, или только один

# 1: более общий вариант, на тот случай, если разметка может поменяться, но не учитывает другие атрибуты у тега <span>
PHP:
скопировать код в буфер обмена
  1. // preg_match_all('#<\s*span\s+class\s*=\s*["\']?greenball["\']?[^>]*>([^<]+)</\s*span\s*>#ui', $str, $green);


# 2: частный вариант — предполагается, что никаких пробелов и других атрибутов быть не может. Только
PHP:
скопировать код в буфер обмена
  1. <span class="greenball"></span>
  2. preg_match_all('#<span class="greenball">([^<]+)</span>#ui', $str, $green);


Результат сохраняется в массив $green,
нулевой индекс которого содержит массивы со всеми совпадшими строками
PHP:
скопировать код в буфер обмена
  1. ($green[0][0] == '<span class="greenball"> 7</span>')
,
// а первый индекс — массив с подстроками (то, что в круглых скобках внутри регулярняго выражения) $green[1][0] == ' 7'.

ещё можно проверить, получилось ли у нас распарсить HTML
PHP:
скопировать код в буфер обмена
  1. if ( empty($green) ) {
  2. die('Nothing found!');
  3. }


# Далее в HTML-шаблоне можно вывести все картинки циклом
# функция trim() убирает пробелы слева и справа

PHP:
скопировать код в буфер обмена
  1. foreach ( $green[1] as $num ):
  2. <img src="images/<?PHP echo trim($num) ?>.jpg" />
  3. endforeach;


это эквивалентно поочерёдному выводу картинок вручную
PHP:
скопировать код в буфер обмена
  1. <img src="images/<?PHP echo trim($green[1][0]) ?>.jpg" />
  2. <img src="images/<?PHP echo trim($green[1][1]) ?>.jpg" />
  3. <img src="images/<?PHP echo trim($green[1][2]) ?>.jpg" />
  4. <img src="images/<?PHP echo trim($green[1][3]) ?>.jpg" />
  5. <img src="images/<?PHP echo trim($green[1][4]) ?>.jpg" />
  6.  

вот такие пироги.
(Добавление)
Если Вам будет нетрудно помогите на php написать мне функцию автоматического обновления страницы, например, что бы страница обновлялась раз в 1 час. Спасибо!

(Отредактировано автором: 06 Июня, 2015 - 14:50:53)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB