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
Форумы портала PHP.SU :: Версия для печати :: Помогите найти ошибку
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Помогите найти ошибку

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

1. Cyrax123 - 29 Августа, 2008 - 19:04:35 - перейти к сообщению
Скрипт по поиску изображений в интернете. Использует поиск Googla и Апорта. Дает запро на них, потом соеденяет результаты и выводит их. Рабочая версия http://www[dot]heel[dot]org[dot]ua/picsearch/

Моя версия. Тут скорее всего синтаксическая ошибка.. Помогите найти.
PHP:
скопировать код в буфер обмена
  1.  
  2. <html>
  3. <head>
  4. <title>Test</title>
  5. </head>
  6. <body>
  7. <center>
  8. <form action="" method="GET">
  9. <input type="text" name="search" size="30" value="<?=isset ($_GET ['search'])?$_GET ['search']:'';?>">
  10. <input type="submit" value="Поиск">
  11. </form>
  12. </center>
  13. <p>
  14. <?
  15.  
  16. if (!empty ($_GET ['search']))
  17. {
  18. //Кол-во рисунков на странице
  19. $per_page = 18;
  20. //Текущая страница
  21. $current_page =
  22. (!empty ($_GET ['page']))?(int)$_GET['page']:1;
  23. //Номера начальной и конечной страниц
  24. $start_page = $current_page*$per_page-($per_page - 1);
  25. $end_page = $current_page*$per_page;
  26. //Поисковая фраза
  27. $search = urlencode ($_GET ['search']);
  28. //Апорт
  29. /*Содержимое первой страницы*/
  30. $aport_site = file_get_contents ('http://sm.aport.ru/scripts/template.dll?That=pics&flt=f00&r=' .$search);
  31. /*Содержимое второй страницы*/
  32. $aport_site = file_get_contents ('http://sm.aport.ru/scripts/template.dll?That=pics&flt=f00&p=1&r=' .$search);
  33. /*Регулярное выражение для поиска ссылок*/
  34. $pattern = '|a href\=\"(http://[^\s\"\'] {10,})\"\starget\=_blank\>[\s\n]*\<img src\=\"(http://img\.aport\.ru\/docstorage\.dll\?base=[0-9]+&id=[0-9]{3,})|';
  35. preg_match_all ($pattern, $aport_site, $aport_imgs);
  36. /*Масив предварительного просмотра*/
  37. $aport_img_small = $aport_imgs [2];
  38. /*Масив оригинальных изображений*/
  39. $aport_img_big = $aport_imgs [1];
  40. /*Google*/
  41. /*Первая страница*/
  42. $google_site =
  43. file_get_contents ('http://images.google.com/images?gbv=2&svnum=10&hl=ru&q=' .$search);
  44. /*Вторая страница*/
  45. $google_site =
  46. file_get_contents ('http://images.google.com/images?gbv=2&svnum=20&hl=ru&start=21&sa=N&q=' .$search);
  47. /*Шаблон для полученич рисунков*/
  48. $pattern = '|,"([\-_a-zA-Z0-9\n] {10, 20}):","(http://[^\s\"\'] {10,})","|';
  49. preg_match_all ($pattern, $google_site, $google_imgs);
  50. /*Занесение рисунков в отдельный масив*/
  51. $google_img_small = $google_imgs [1];
  52. $google_img_big = $google_imgs [2];
  53. /*Формирование ссылки для рисунков предпросмотра*/
  54. for ($i = 0;$i<count ($google_img_small); $i++)
  55. {
  56. $google_img_small [$i] =
  57. 'http://tbn0.google.com/images?q=tbn:' $google_img_small [$i];
  58. }
  59. /*проверка результатов Google*/
  60. if (!is_array ($google_img_small))
  61. $google_img_small = array();
  62. /*Проверка результатов Апорт*/
  63. if (!is_array ($aport_img_small))
  64. $aport_img_small = array();
  65. /*Склеивание массивов со ссылками на предварительный просмотр*/
  66. $img_small = array_merge ($google_img_small, $aport_img_small);
  67. /*Склеивание массивов со ссылками на оригинальеые картинки*/
  68. $img_big = array_merge ($google_img_big, $aport_img_big);
  69. /*Убираем одинаковые ссылки*/
  70. $img_small = array_unique ($img_small);
  71. $img_big = array_unique ($img_big);
  72. /*Навигация по страницам*/
  73. if ($end_page > count ($img_small)-1)
  74. $end_page = count ($img_small)-1;
  75.  
  76. $page_count = ceil( (count($img_small)-1)/ $per_page);
  77.  
  78. echo '<hr><p align="center"><b>';
  79. for ($i=1;$i<=$page_count;$i++)
  80. {
  81. echo ':' . ($current_page==$i?$i:'<a href="?search=' .$search. '&page=' .$i.'">'.$i.'</a>')
  82. .':';
  83. }
  84.  
  85. echo '</b></p><hr>';
  86.  
  87. echo '<table width="100%" align="center" border="0" valign="middle" cellspacing="20"><tr>';
  88.  
  89. $tr = 0;
  90.  
  91. /*Цыкл вывода изображений*/
  92.  
  93. for ($i=$start_page;$i<=$end_page;$i++)
  94. {
  95. if ($tr == 6)
  96. {
  97. $tr = 0;
  98. echo '</tr><tr>';
  99. }
  100. if (empty($img_big[$i]) || empty ($img_small[$i]))
  101. continue;
  102.  
  103. $tr++;
  104. echo '<td><a href="'.$img_big[$i].'"
  105. target="_blank"><img src="' .$img_small[$i] .'" border="0"></td>';
  106.  
  107. }
  108. echo '</tr></table><body></html>';
  109.  
  110. }
  111.  
  112. ?>
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
2. pifon1989 - 29 Августа, 2008 - 23:34:02 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. <html>
  3. <head>
  4. <title>Test</title>
  5. </head>
  6. <body>
  7. <center>
  8. <form action="" method="GET">
  9. <input type="text" name="search" size="30" value="<?PHP isset($_GET ['search']) ? $_GET ['search'] : '' ; ?>">
  10. <input type="submit" value="Поиск">
  11. </form>
  12. </center>
  13. <p>
  14. <?PHP
  15.  
  16. if (!empty($_GET ['search']))
  17. {
  18. //Кол-во рисунков на странице
  19. $per_page = 18;
  20. //Текущая страница
  21. $current_page = (!empty($_GET ['page'])) ? (int)$_GET['page'] : 1;
  22. //Номера начальной и конечной страниц
  23. $start_page = $current_page*$per_page-($per_page - 1);
  24. $end_page = $current_page*$per_page;
  25. //Поисковая фраза
  26. $search = urlencode ($_GET ['search']);
  27. //Апорт
  28. /*Содержимое первой страницы*/
  29. $aport_site = file_get_contents('http://sm.aport.ru/scripts/template.dll?That=pics&flt=f00&r=' .$search);
  30. /*Содержимое второй страницы*/
  31. $aport_site = file_get_contents('http://sm.aport.ru/scripts/template.dll?That=pics&flt=f00&p=1&r=' .$search);
  32. /*Регулярное выражение для поиска ссылок*/
  33. $pattern = '|a href\=\"(http://[^\s\"\'] {10,})\"\starget\=_blank\>[\s\n]*\<img src\=\"(http://img\.aport\.ru\/docstorage\.dll\?base=[0-9]+&id=[0-9]{3,})|';
  34. preg_match_all($pattern, $aport_site, $aport_imgs);
  35. /*Масив предварительного просмотра*/
  36. $aport_img_small = $aport_imgs[2];
  37. /*Масив оригинальных изображений*/
  38. $aport_img_big = $aport_imgs[1];
  39. /*Google*/
  40. /*Первая страница*/
  41. $google_site = file_get_contents('http://images.google.com/images?gbv=2&svnum=10&hl=ru&q='.$search);
  42. /*Вторая страница*/
  43. $google_site = file_get_contents('http://images.google.com/images?gbv=2&svnum=20&hl=ru&start=21&sa=N&q='.$search);
  44. /*Шаблон для полученич рисунков*/
  45. $pattern = '|,"([\-_a-zA-Z0-9\n] {10, 20}):","(http://[^\s\"\'] {10,})","|';
  46. preg_match_all($pattern, $google_site, $google_imgs);
  47. /*Занесение рисунков в отдельный масив*/
  48. $google_img_small = $google_imgs[1];
  49. $google_img_big = $google_imgs[2];
  50. /*Формирование ссылки для рисунков предпросмотра*/
  51. for ($i = 0; $i < count($google_img_small); $i++)
  52. {
  53. $google_img_small[$i] = 'http://tbn0.google.com/images?q=tbn:'.$google_img_small[$i];
  54. }
  55. /*проверка результатов Google*/
  56. if (!is_array ($google_img_small))
  57. $google_img_small = array();
  58. /*Проверка результатов Апорт*/
  59. if (!is_array ($aport_img_small))
  60. $aport_img_small = array();
  61. /*Склеивание массивов со ссылками на предварительный просмотр*/
  62. $img_small = array_merge($google_img_small, $aport_img_small);
  63. /*Склеивание массивов со ссылками на оригинальеые картинки*/
  64. $img_big = array_merge($google_img_big, $aport_img_big);
  65. /*Убираем одинаковые ссылки*/
  66. $img_small = array_unique($img_small);
  67. $img_big = array_unique($img_big);
  68. /*Навигация по страницам*/
  69. if ($end_page > count($img_small)-1)
  70. $end_page = count($img_small)-1;
  71.  
  72. $page_count = ceil( (count($img_small)-1)/ $per_page);
  73.  
  74. echo '<hr><p align="center"><b>';
  75. for ($i=1; $i <= $page_count; $i++)
  76. {
  77. echo ':' . ($current_page==$i?$i:'<a href="?search=' .$search. '&page=' .$i.'">'.$i.'</a>').':';
  78. }
  79.  
  80. echo '</b></p><hr>';
  81.  
  82. echo '<table width="100%" align="center" border="0" valign="middle" cellspacing="20"><tr>';
  83.  
  84. $tr = 0;
  85.  
  86. /*Цикл вывода изображений*/
  87.  
  88. for ($i = $start_page; $i <= $end_page; $i++)
  89. {
  90. if ($tr == 6)
  91. {
  92. $tr = 0;
  93. echo '</tr><tr>';
  94. }
  95. if (empty($img_big[$i]) || empty($img_small[$i]))
  96. continue;
  97.  
  98. $tr++;
  99. echo '<td><a href="'.$img_big[$i].'"
  100. target="_blank"><img src="' .$img_small[$i] .'" border="0"></td>';
  101.  
  102. }
  103. echo '</tr></table><body></html>';
  104.  
  105. }
  106.  
  107. ?>
  108.  

Попробуйте-ка пока так. Чисто что в глаза бросается я вам подправил. Чесслово, оч хотел бы помочь, но сёдня весь день в разъездах, падло институт зохавал мосх, дай Бог добраться до подушки Улыбка
Если не пойдёт, вы не забудьте код ошибки написать. ;)
3. Cyrax123 - 30 Августа, 2008 - 14:11:55 - перейти к сообщению
Спасибо!Скрипт конечно еще не работает... Но уже лучше.. он запускается, но картинки не выдает...
4. Cyrax123 - 31 Августа, 2008 - 16:13:08 - перейти к сообщению
Ну что? Кто поможет ламеру разобраться с этой проблемой? Радость
5. Cyrax123 - 04 Сентября, 2008 - 12:02:08 - перейти к сообщению
ошибка скорее всего в патернах...
6. pifon1989 - 04 Сентября, 2008 - 18:06:24 - перейти к сообщению
Попробуйте проверить правильность вызова картинки с удалённого ресурса. Код огромный и отследить очень сложно. Может быть, невовремя останавливается цикл, а, может, не оттуда вызвана картинка. Может и ещё что...
7. EuGen - 04 Сентября, 2008 - 18:22:30 - перейти к сообщению
http://phpfaq[dot]ru/debug
8. Cyrax123 - 06 Сентября, 2008 - 21:49:16 - перейти к сообщению
Можете трезвым глазом глянуть на паттерны, я правильно там все разделители раставил....?
PHP:
скопировать код в буфер обмена
  1.  
  2. $pattern = '|a href\=\"(http://[^\s\"\'] {10,})\"\starget\=_blank\>[\s\n]*\<img src\=\"(http://img\.aport\.ru\/docstorage\.dll\?base=[0-9]+&id=[0-9]{3,})|';
  3.  
  4. $pattern = '|,"([\-_a-zA-Z0-9\n] {10, 20}):","(http://[^\s\"\'] {10,})","|';
  5.  

 

Powered by ExBB FM 1.0 RC1