PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Описание: Переменная онлайн
Поиск в теме | Версия для печати
Кубик
Отправлено: 06 Марта, 2017 - 16:29:19
Новичок
Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2017
Помог: 0 раз(а)
Как сделать повтор кода, пока $geim[8] которая меняется на странице онлайн, не станет равна нужному мне значению $ge = '0:0'
PHP:
скопировать код в буфер обмена
preg_match ( '#<div style=(.*?)><a href=(.*?)><span class=(.*?)></span></a></div><br><font class=txtmed style=(.*?)>(.*) ((.*)) (.*)</font></b></font></div>#' , $text0 , $geim ) ; $ge = '0:0' ;
Кубик
Отправлено: 06 Марта, 2017 - 19:19:35
Новичок
Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2017
Помог: 0 раз(а)
так, только цикл не останавливается когда $ge = $geim[8], почему ?
PHP:
скопировать код в буфер обмена
for ( $i = 0 ; $ge = $geim [ 8] ; $i ++ )
{
curl_setopt ( $ch0 , CURLOPT_USERAGENT
, 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko' ) ; preg_match ( '#<div style=(.*?)><a href=(.*?)><span class=(.*?)></span></a></div><br><font class=txtmed style=(.*?)>(.*) ((.*)) (.*)</font></b></font></div>#' , $text0 , $geim ) ; //alert($geim[8]);
}
Кубик
Отправлено: 06 Марта, 2017 - 21:45:42
Новичок
Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2017
Помог: 0 раз(а)
вернее, мне нужен цикл while.
сначала работал, потом перестал
PHP:
скопировать код в буфер обмена
$ge = '0:0' ;
while ( $ge = $geim [ 8] )
{
curl_setopt ( $ch0 , CURLOPT_USERAGENT
, 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko' ) ; preg_match ( '#<div style=(.*?)><a href=(.*?)><span class=(.*?)></span></a></div><br><font class=txtmed style=(.*?)>(.*) ((.*)) (.*)</font></b></font></div>#' , $text0 , $geim ) ; $ge ++;
//alert($geim[8]);
}
Строитель
Отправлено: 06 Марта, 2017 - 21:54:01
Участник
Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014
Откуда: Украина
Помог: 74 раз(а)
Кубик , чем дальше, тем всё менее понятно, что же вам требуется получить в итоге?
Кубик пишет: Как сделать повтор кода, пока $geim[8] которая меняется на странице онлайн, не станет равна нужному мне значению $ge = '0:0'
Можно написать рекурсивную функцию, которая будет вызываться до момента, когда $ge станет равна нулю. Или что вам нужно?
Строитель
Отправлено: 06 Марта, 2017 - 22:37:53
Участник
Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014
Откуда: Украина
Помог: 74 раз(а)
Кубик пишет: исполнить код дальше, только тогда, когда $geim[8] (меняется на странице онлайн) будет равна постоянной $ge = '0:0';
Ну вот вам пример
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
// Код повторится 9 раз
function repeatProcess( $numb ) {
static $int = '0:0' ;
if ( $int < $numb ) {
++ $int ;
return repeatProcess( $numb ) ;
} else {
return $int ;
}
}
Кубик
Отправлено: 06 Марта, 2017 - 23:05:56
Новичок
Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2017
Помог: 0 раз(а)
Выдаёт;
Uncaught Error: Call to undefined function app\forms\repeatProcess() in res://app/forms/MainForm.php on line 75, position 22
А из моего примера не получится ?
PHP:
скопировать код в буфер обмена
if ( $geim [ 8] != $ge )
{
while ( $ge = $geim [ 8] )
{
curl_setopt ( $ch0 , CURLOPT_USERAGENT
, 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko' ) ; preg_match ( '#<div style=(.*?)><a href=(.*?)><span class=(.*?)></span></a></div><br><font class=txtmed style=(.*?)>(.*) ((.*)) (.*)</font></b></font></div>#' , $text0 , $geim ) ; $ge ++;
//alert($geim[8]);
}
}
Строитель
Отправлено: 06 Марта, 2017 - 23:15:29
Участник
Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014
Откуда: Украина
Помог: 74 раз(а)
Кубик пишет: Call to undefined function app\forms\repeatProcess()
Похоже что вы код не полностью скопировали.
Кубик пишет: А из моего примера не получится ?
А какие значения в переменных
$geim[8] и
$ge ?
Строитель
Отправлено: 06 Марта, 2017 - 23:42:07
Участник
Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014
Откуда: Украина
Помог: 74 раз(а)
Кубик , теоретически вроде бы так должно работать (проверить не на чём)
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
$sobt = [ ] ; // <--Тут вроде бы должен быть массив URL'ов
function repeatProcess
( Array $sobt ) { static $ge = '0:0' ;
curl_setopt ( $ch0 , CURLOPT_USERAGENT
, 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko' ) ; '#<div style=(.*?)><a href=(.*?)><span class=(.*?)></span></a></div><br><font class=txtmed style=(.*?)>(.*) ((.*)) (.*)</font></b></font></div>#' ,
$text0 ,
$geim
) ;
if ( $geim [ 8] > $ge ) {
++ $ge ;
return repeatProcess( $sobt ) ;
}
return $geim ;
}
В результат работы функции я включил массив из preg_match() $geim . Или нужна переменная $text0 ?
Строитель
Отправлено: 06 Марта, 2017 - 23:56:58
Участник
Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014
Откуда: Украина
Помог: 74 раз(а)
Кубик пишет: да, там массив ссылок
Ну тогда надо в строке
$ch0 = curl_init($sobt[0]); менять ключи массива на каждой итерации. Сейчас попробую переписать код.
(Добавление)
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
$sobt = [ ] ; // Массив URL'ов
$result = [ ] ; // Массив результатов
foreach ( $sobt as $url ) {
curl_setopt ( $ch0 , CURLOPT_USERAGENT
, 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko' ) ;
'#<div style=(.*?)><a href=(.*?)><span class=(.*?)></span></a></div><br><font class=txtmed style=(.*?)>(.*) ((.*)) (.*)</font></b></font></div>#' ,
$text0 ,
$geim
) ;
$result [ ] = $geim ;
}
Строитель
Отправлено: 07 Марта, 2017 - 00:18:20
Участник
Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014
Откуда: Украина
Помог: 74 раз(а)
Кубик пишет: сейчас проверю а тот ошибку выдал;
Uncaught Error: Call to undefined function app\forms\repeatProcess()
Я выше уже писал об этой ошибке. Могу только добавить, что описание функции должно быть прописано в пространстве
app\forms\ .
Кубик
Отправлено: 07 Марта, 2017 - 00:36:15
Новичок
Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2017
Помог: 0 раз(а)
не заработало, понятно, спасибо
(Добавление)
добил свой пример, работает как надо, только проблема в запросах, 2,3 запроса в секунду за 10 минут будет слишком много.
как можно притормозить цикл ?
PHP:
скопировать код в буфер обмена
if ( $geim [ 8 ] != '0:0' )
{
while ( $geim [ 8 ] != '0:0' )
{
curl_setopt ( $ch0 , CURLOPT_USERAGENT
, 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko' ) ; preg_match ( '#<div style=(.*?)><a href=(.*?)><span class=(.*?)></span></a></div><br><font class=txtmed style=(.*?)>(.*) ((.*)) (.*)</font></b></font></div>#' , $text0 , $geim ) ; }
alert( 'УРА' ) ;
}
(Отредактировано автором: 07 Марта, 2017 - 01:52:30)
Поиск в теме | Версия для печати
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB