PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
Cyrax123
Отправлено: 12 Сентября, 2008 - 14:17:33
Гость
Покинул форум
Сообщений всего: 68
Дата рег-ции: Авг. 2008
Помог: 0 раз(а)
Пожалуйста, помогите найти ошибку в этих двух паттернах.. она должна тут быть...
PHP:
скопировать код в буфер обмена
$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,})|' ;
$pattern = '|,"([\-_a-zA-Z0-9\n] {10, 20}):","(http://[^\s\"\'] {10,})","|' ;
Cyrax123
Отправлено: 12 Сентября, 2008 - 21:46:18
Гость
Покинул форум
Сообщений всего: 68
Дата рег-ции: Авг. 2008
Помог: 0 раз(а)
Вот, смотрите весь код... Уже сколько голову ломаю над этим скриптом... Ничего.. но ошибка должна быть паттернах.. вроде...
PHP:
скопировать код в буфер обмена
<html>
<head>
<title>Test</title>
</head>
<body>
<center>
<form action="" method="GET">
<input type="text" name="search" size="30" value="
<?PHP isset ( $_GET [ 'search' ] ) ?
$_GET [ 'search' ] : '' ; ?> ">
<input type="submit" value="Поиск">
</form>
</center>
<p>
<?PHP
if ( ! empty ( $_GET [ 'search' ] ) ) {
//Кол-во рисунков на странице
$per_page = 18 ;
//Текущая страница
$current_page = ( ! empty ( $_GET [ 'page' ] ) ) ?
( int
) $_GET [ 'page' ] : 1 ; //Номера начальной и конечной страниц
$start_page = $current_page * $per_page - ( $per_page - 1) ;
$end_page = $current_page * $per_page ;
//Поисковая фраза
//Апорт
/*Содержимое первой страницы*/
$aport_site = file_get_contents ( 'http://sm.aport.ru/scripts/template.dll?That=pics&flt=f00&r=' . $search ) ; /*Содержимое второй страницы*/
$aport_site = file_get_contents ( 'http://sm.aport.ru/scripts/template.dll?That=pics&flt=f00&p=1&r=' . $search ) ; /*Регулярное выражение для поиска ссылок*/
$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,})|' ;
/*Масив предварительного просмотра*/
$aport_img_small = $aport_imgs [ 2] ;
/*Масив оригинальных изображений*/
$aport_img_big = $aport_imgs [ 1] ;
/*Google*/
/*Первая страница*/
$google_site = file_get_contents ( 'http://images.google.com/images?gbv=2&svnum=10&hl=ru&q=' . $search ) ; /*Вторая страница*/
$google_site = file_get_contents ( 'http://images.google.com/images?gbv=2&svnum=20&hl=ru&start=21&sa=N&q=' . $search ) ; /*Шаблон для полученич рисунков*/
$pattern = '|,"([\-_a-zA-Z0-9\n] {10, 20}):","(http://[^\s\"\'] {10,})","|' ;
/*Занесение рисунков в отдельный масив*/
$google_img_small = $google_imgs [ 1] ;
$google_img_big = $google_imgs [ 2] ;
/*Формирование ссылки для рисунков предпросмотра*/
for ( $i = 0 ; $i < count ( $google_img_small ) ; $i ++ ) {
$google_img_small [ $i ] = 'http://tbn0.google.com/images?q=tbn:' . $google_img_small [ $i ] ;
}
/*проверка результатов Google*/
$google_img_small = array ( ) ; /*Проверка результатов Апорт*/
$aport_img_small = array ( ) ; /*Склеивание массивов со ссылками на предварительный просмотр*/
$img_small = array_merge ( $google_img_small , $aport_img_small ) ; /*Склеивание массивов со ссылками на оригинальеые картинки*/
$img_big = array_merge ( $google_img_big , $aport_img_big ) ; /*Убираем одинаковые ссылки*/
/*Навигация по страницам*/
if ( $end_page > count ( $img_small ) - 1
) $end_page = count ( $img_small ) - 1 ;
$page_count = ceil ( ( count ( $img_small ) - 1
) / $per_page ) ;
echo '<hr><p align="center"><b>' ;
for ( $i = 1 ; $i <= $page_count ; $i ++ )
{
echo ':' . ( $current_page == $i ?$i : '<a href="?search=' . $search . '&page=' . $i . '">' . $i . '</a>' ) . ':' ;
}
echo '</b></p><hr>' ;
echo '<table width="100%" align="center" border="0" valign="middle" cellspacing="20"><tr>' ;
$tr = 0 ;
/*Цикл вывода изображений*/
for ( $i = $start_page ; $i <= $end_page ; $i ++ )
{
if ( $tr == 6)
{
$tr = 0 ;
echo '</tr><tr>' ;
}
continue ;
$tr ++;
echo '<td><a href="' . $img_big [ $i ] . '"
target="_blank"><img src="' . $img_small [ $i ] . '" border="0"></td>' ;
}
echo '</tr></table><body></html>' ;
}
?>
Джур
Отправлено: 12 Сентября, 2008 - 23:09:46
Посетитель
Покинул форум
Сообщений всего: 423
Дата рег-ции: Март 2007
Помог: 0 раз(а)
ну как я и говорил, ошибки из-за
Цитата: Символ "|" является системным и использовать его для "обертки" реги нестоит
зачем эскейпить "="?
зачем ескейпить ' " ' ?
зачем ескейпить "<" и ">"
Замените в своем скрипте строчку на эту:
PHP:
скопировать код в буфер обмена
<?
$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,})~' ;
скрипт картинки находит.
-----Тамбовский каджит тебе товарищ
Джур
Отправлено: 13 Сентября, 2008 - 17:06:47
Посетитель
Покинул форум
Сообщений всего: 423
Дата рег-ции: Март 2007
Помог: 0 раз(а)
возможно с гугла странички не прогружаются.
вдруг сервер в черном списке или опечатка где... Проверте получаемые данные.
PHP:
скопировать код в буфер обмена
<html>
<head>
<title>Test</title>
</head>
<body>
<center>
<form action="" method="GET">
<input type="text" name="search" size="30" value="
<?PHP isset ( $_GET [ 'search' ] ) ?
$_GET [ 'search' ] : '' ; ?> ">
<input type="submit" value="Поиск">
</form>
</center>
<p>
<?PHP
if ( ! empty ( $_GET [ 'search' ] ) ) {
//Кол-во рисунков на странице
$per_page = 18 ;
//Текущая страница
$current_page = ( ! empty ( $_GET [ 'page' ] ) ) ?
( int
) $_GET [ 'page' ] : 1 ; //Номера начальной и конечной страниц
$start_page = $current_page * $per_page - ( $per_page - 1) ;
$end_page = $current_page * $per_page ;
//Поисковая фраза
//Апорт
/*Содержимое первой страницы*/
//$aport_site = file_get_contents('http://sm.aport.ru/scripts/template.dll?That=pics&flt=f00&r=' .$search);
/*Содержимое второй страницы*/
$aport_site = file_get_contents ( 'http://sm.aport.ru/scripts/template.dll?That=pics&flt=f00&p=1&r=' . $search ) ; /*Регулярное выражение для поиска ссылок*/
$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,})~' ;
/*Масив предварительного просмотра*/
$aport_img_small = $aport_imgs [ 2] ;
/*Масив оригинальных изображений*/
$aport_img_big = $aport_imgs [ 1] ;
/*Google*/
/*Первая страница*/
//$google_site = file_get_contents('http://images.google.com/images?gbv=2&svnum=10&hl=ru&q='.$search);
/*Вторая страница*/
$google_site = file_get_contents ( 'http://images.google.com/images?gbv=2&svnum=20&hl=ru&start=21&sa=N&q=' . $search ) ; /*Шаблон для полученич рисунков*/
$pattern = '~,"([-_A-z0-9]+?):","(http://.+?)",~' ;
/*Занесение рисунков в отдельный масив*/
$google_img_small = $google_imgs [ 1] ;
$google_img_big = $google_imgs [ 2] ;
/*Формирование ссылки для рисунков предпросмотра*/
for ( $i = 0 ; $i < count ( $google_img_small ) ; $i ++ ) {
$google_img_small [ $i ] = 'http://tbn0.google.com/images?q=tbn:' . $google_img_small [ $i ] ;
}
/*проверка результатов Google*/
$google_img_small = array ( ) ; /*Проверка результатов Апорт*/
$aport_img_small = array ( ) ; /*Склеивание массивов со ссылками на предварительный просмотр*/
$img_small = array_merge ( $google_img_small , $aport_img_small ) ; /*Склеивание массивов со ссылками на оригинальеые картинки*/
$img_big = array_merge ( $google_img_big , $aport_img_big ) ; /*Убираем одинаковые ссылки*/
/*Навигация по страницам*/
if ( $end_page > count ( $img_small ) - 1
) $end_page = count ( $img_small ) - 1 ;
$page_count = ceil ( ( count ( $img_small ) - 1
) / $per_page ) ;
echo '<hr><p align="center"><b>' ;
for ( $i = 1 ; $i <= $page_count ; $i ++ )
{
echo ':' . ( $current_page == $i ?$i : '<a href="?search=' . $search . '&page=' . $i . '">' . $i . '</a>' ) . ':' ;
}
echo '</b></p><hr>' ;
echo '<table width="100%" align="center" border="0" valign="middle" cellspacing="20"><tr>' ;
$tr = 0 ;
/*Цикл вывода изображений*/
for ( $i = $start_page ; $i <= $end_page ; $i ++ )
{
if ( $tr == 6)
{
$tr = 0 ;
echo '</tr><tr>' ;
}
continue ;
$tr ++;
echo '<td><a href="' . $img_big [ $i ] . '"
target="_blank"><img src="' . $img_small [ $i ] . '" border="0"></td>' ;
}
echo '</tr></table><body></html>' ;
}
?>
-----Тамбовский каджит тебе товарищ
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB