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]   

> Без описания
Cyrax123
Отправлено: 12 Сентября, 2008 - 14:17:33
Post Id


Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Авг. 2008  


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




Пожалуйста, помогите найти ошибку в этих двух паттернах.. она должна тут быть...
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.  
 
 Top
Джур
Отправлено: 12 Сентября, 2008 - 19:32:20
Post Id



Посетитель


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


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




Символ "|" является системным и использовать его для "обертки" реги нестоит
зачем эскейпить "="?
зачем ескейпить ' " ' ?
зачем ескейпить "<" и ">"

ничего больше в голову не приходит... Пожалуйста указывайте в следующий раз больше кода, чтобы была возможность проверить регги в работе.


-----
Тамбовский каджит тебе товарищ
 
 Top
Cyrax123
Отправлено: 12 Сентября, 2008 - 21:46:18
Post Id


Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Авг. 2008  


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




Вот, смотрите весь код... Уже сколько голову ломаю над этим скриптом... Ничего.. но ошибка должна быть паттернах.. вроде...
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.  
 
 Top
Джур
Отправлено: 12 Сентября, 2008 - 23:09:46
Post Id



Посетитель


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


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




ну как я и говорил, ошибки из-за
Цитата:
Символ "|" является системным и использовать его для "обертки" реги нестоит
зачем эскейпить "="?
зачем ескейпить ' " ' ?
зачем ескейпить "<" и ">"

Замените в своем скрипте строчку на эту:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3.  
  4. $pattern = '~a href="(http://[^\s"\']{10,})"\s+target=_blank>[\s\n]*<img src="(http://img.aport.ru/docstorage.dll\?base=[0-9]+&id=[0-9]{3,})~';
  5.  


скрипт картинки находит.


-----
Тамбовский каджит тебе товарищ
 
 Top
Cyrax123
Отправлено: 13 Сентября, 2008 - 11:55:04
Post Id


Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Авг. 2008  


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




О, огромное спасибо.. А можете пожалуйста еще паттерн по гуглу глянуть..
PHP:
скопировать код в буфер обмена
  1.  
  2. $pattern = '|,"([\-_a-zA-Z0-9\n] {10, 20}):","(http://[^\s\"\'] {10,})","|';
  3.  
 
 Top
Джур
Отправлено: 13 Сентября, 2008 - 12:46:44
Post Id



Посетитель


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


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




PHP:
скопировать код в буфер обмена
  1. <?
  2.  
  3. $pattern = '~,"([-_A-z0-9]+?):","(http://.+?)",~';


-----
Тамбовский каджит тебе товарищ
 
 Top
Cyrax123
Отправлено: 13 Сентября, 2008 - 13:04:01
Post Id


Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Авг. 2008  


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




Заработало, но как-то криво... Вобщем выдает всего десять картинок, а должно быть так... http://www[dot]heel[dot]org[dot]ua/picsearch/
 
 Top
Джур
Отправлено: 13 Сентября, 2008 - 13:30:02
Post Id



Посетитель


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


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




Ха-ха у мнея на запрос "cat" выдает две странички, на первой 18 на второй 14...

Если что-то глючит, ищи ошибки в настройках своего сервера


-----
Тамбовский каджит тебе товарищ
 
 Top
Cyrax123
Отправлено: 13 Сентября, 2008 - 16:04:20
Post Id


Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Авг. 2008  


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




А какие могут быть ошибки на сервере? У меня вот так работает: http://www[dot]test[dot]ukrworld[dot]net/test.php
(Добавление)
Кстати, картинки только с апорта.. с гугла нету...

(Отредактировано автором: 13 Сентября, 2008 - 16:04:35)

 
 Top
Джур
Отправлено: 13 Сентября, 2008 - 17:06:47
Post Id



Посетитель


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


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




возможно с гугла странички не прогружаются. Улыбка вдруг сервер в черном списке или опечатка где... Проверте получаемые данные.

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


-----
Тамбовский каджит тебе товарищ
 
 Top
Cyrax123
Отправлено: 13 Сентября, 2008 - 18:35:38
Post Id


Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Авг. 2008  


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




Ничего не изменилось... Интересно... интересно...
 
 Top
pifon1989
Отправлено: 13 Сентября, 2008 - 18:47:51
Post Id



Частый гость


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


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




Может дело в коварном двоеточии после tbn, которого в гугловских сцылках нет? Однако
PHP:
скопировать код в буфер обмена
  1. http://tbn0.google.com/images?q=tbn:

Попробуйте заменить в коде
PHP:
скопировать код в буфер обмена
  1.  
  2. $google_img_small[$i] = 'http://tbn0.google.com/images?q=tbn:'.$google_img_small[$i];
  3.  

на
PHP:
скопировать код в буфер обмена
  1.  
  2. $google_img_small[$i] = 'http://tbn0.google.com/images?q=tbn'.$google_img_small[$i];
  3.  

А так даже и не знаю. Лучше вообще попробовать разобрать и собрать код построчно, проверяя работоспособность по частям. Скорее всего - взаимодействие с гуглом построено неправильно.


-----
Ассемблер для Чайников
Всем любителям Pascal посвящается:
function writeln($text) {echo '<br>'.$text};
 
 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