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]   

> Без описания
xsh
Отправлено: 11 Августа, 2011 - 11:39:00
Post Id



Новичок


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


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




PHP:
скопировать код в буфер обмена
  1. $file = file('url.txt');
  2. foreach($file as $n)
  3. {
  4.         if ($data = file_get_contents("http://webcache.googleusercontent.com/search?q=cache:$n"));
  5.                 $regex = '/snapshot of the page as it appeared on (.+?) GMT/';
  6.                 preg_match($regex,$data,$match);
  7. echo "$n $match[1]";
  8. }

при работе возникает PHP Notice: Undefined offset: 1 in /var/www/1.php on line 10
и данные верные выдает только за последний проход, а остальные все с нотисом.


-----
$хикикомори()
goodlook...goodtime...connect... offline...
 
 Top
OrmaJever
Отправлено: 11 Августа, 2011 - 11:49:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




не нашло на странице совпадений с маской, и $match пустой или не имеет первый елемент


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
illy
Отправлено: 11 Августа, 2011 - 11:50:48
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


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




разве file_get_contents можно применять к ссылке?
я прост сам не знаю Не понял
а вот здесь echo "$n $match[1]" если по регулярке не нашёл ничё, то при выводе будет писать ошибку.

Скопируй url.txt

(Отредактировано автором: 11 Августа, 2011 - 11:51:21)



-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
xsh
Отправлено: 11 Августа, 2011 - 11:58:01
Post Id



Новичок


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


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




illyможно и даже нужно
url.txt:

OrmaJever в том то и дело я не знаю как правильно написать строку echo "$n $match[1]"; поскольку если просто echo $match; написать то скрипт вообще не работает, а так хоть 1 значение выдает.


-----
$хикикомори()
goodlook...goodtime...connect... offline...
 
 Top
illy
Отправлено: 11 Августа, 2011 - 12:19:51
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


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




<?php
$file = file('url.txt');
foreach($file as $n)
{
$data=file_get_contents("http://webcache.googleusercontent.com/search?q=cache:$n");
if(preg_match('/snapshot of the page as it appeared on (.*)? GMT/',$data,$match) or preg_match('/по состоянию на (.*)? GMT/',$data,$match)){
echo "$n $match[1]<br>";
}
}
?>

но если будет грузить больше 30 секунд, то остановится Улыбка

(Отредактировано автором: 11 Августа, 2011 - 12:35:37)



-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
xsh
Отправлено: 11 Августа, 2011 - 12:31:13
Post Id



Новичок


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


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




illy ошибку не выдает, но показывает по прежнему только результат по последнему значению из url.txt
не остановится, я то с локала его запускаю. планирую туда прокси еще прикрутить, только пока не знаю как. как то через stream_context_create надо лист с проксями подцеплять.

(Отредактировано автором: 11 Августа, 2011 - 12:44:43)



-----
$хикикомори()
goodlook...goodtime...connect... offline...
 
 Top
illy
Отправлено: 11 Августа, 2011 - 13:00:28
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


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




<?php
$file = file('url.txt');
foreach($file as $n)
{
$data=file_get_contents("http://webcache.googleusercontent.com/search?q=cache:$n");
$data=preg_replace('/(.*)по состоянию на (.*)? GMT(.*)/','\2',$data);
$data=preg_replace('/(.*)snapshot of the page as it appeared on (.*)? GMT(.*)/','bzz\2nzz',$data);
preg_match('/bzz(.*)nzz/',$data,$m);
echo $n.$m;
}
?>
$m тут надо $m[0] или $m[1] не могу проверить так как гугл ограничил доступ Ха-ха

(Отредактировано автором: 11 Августа, 2011 - 13:27:03)



-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
OrmaJever
Отправлено: 11 Августа, 2011 - 14:46:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




xsh просто на страницах нету такой маски - "snapshot of the page as it appeared on (.+?) GMT"
если всётаки так запланировано что может и не быть совпадений то нужно просто проверять переменую
PHP:
скопировать код в буфер обмена
  1. echo "$n ". (isset($match[1]) ? $match[1] : 'не найдено');


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
xsh
Отправлено: 11 Августа, 2011 - 14:48:07
Post Id



Новичок


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


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




illy если $m; то
yandex.ru Array
bytes.com Array
yahoo.com Array

если $m[0] то у всех url выдает PHP Notice: Undefined offset: 0 in /var/www/1.php on line 9
а у последнего yahoo.combzz5 Aug 2011 13:29:15nzz
явно не то..
если $m[1] то у всех url выдает PHP Notice: Undefined offset: 1 in /var/www/1.php on line 9
а у последнего yahoo.com5 Aug 2011 13:29:15


-----
$хикикомори()
goodlook...goodtime...connect... offline...
 
 Top
xsh
Отправлено: 11 Августа, 2011 - 17:20:37
Post Id



Новичок


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


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




OrmaJever запланировано что совпадения должны быть всегда и если сделать так:
PHP:
скопировать код в буфер обмена
  1. if(preg_match('/snapshot of the page as it appeared on (.*)? GMT/',$data,$match) or preg_match('/по состоянию на (.*)? GMT/',$data,$match)){

то исключаются ситуации несовпадения, и при этом скрипт не работает со списком url.txt а выдает значение только последнего. при этом если проверить те значения что не выводятся этим скриптом просто подставляя напрямую:
PHP:
скопировать код в буфер обмена
  1.  
  2. $n = "bytes.com";
  3. $data = file_get_contents("http://webcache.googleusercontent.com/search?q=cache:$n");
  4. $regex = '/snapshot of the page as it appeared on (.+?) GMT/';
  5. preg_match($regex,$data,$match);
  6. file_put_contents("log.txt",$match[1]."\r\n", FILE_APPEND);
  7. echo "Все данные были сохранены в log.txt";

то информация выдается, проблема в подключении самого файла url.txt к скрипту, ошибка где то там, маска же работает даже если текст на русском как я понял, поскольку если в браузере вбить http://webcache[dot]googleuserconten[dot][dot][dot]=cache:bytes[dot]com то парсенный участок выдается на русском.
(Добавление)
если вставить в скрипт:
PHP:
скопировать код в буфер обмена
  1.     echo "$n ". (isset($match[1]) ? $match[1] : 'не найдено');

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


-----
$хикикомори()
goodlook...goodtime...connect... offline...
 
 Top
xsh
Отправлено: 12 Августа, 2011 - 02:16:45
Post Id



Новичок


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


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




вообщем, бодания со скриптом не прошли даром и вот к чему пришел:
PHP:
скопировать код в буфер обмена
  1. $file = array("yandex.ru", "yahoo.com", "mail.ru");
  2. foreach($file as $n){
  3.     $data=file_get_contents("http://webcache.googleusercontent.com/search?q=cache:$n");
  4.     if(preg_match('/snapshot of the page as it appeared on (.*)? GMT/',$data,$match) or preg_match('/по состоянию на (.*)? GMT/',$data,$match)){
  5.         print("$n $match[1]");
  6.     }
  7. }

если так то работает, при этом если проверять отдельно поступают ли данные из файла, то выходит что поступают.пришел к выводу что функция file() как то не дружит с file_get_contents()
подскажите пожалуйста чем можно заменить тут функцию file() чтобы забирать массив из файла?

(Отредактировано автором: 12 Августа, 2011 - 02:17:18)



-----
$хикикомори()
goodlook...goodtime...connect... offline...
 
 Top
illy
Отправлено: 12 Августа, 2011 - 09:50:20
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


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




$f=file('url.txt'');
for($c=0;$c!=sizeof($f);$c++){
$d=file_get_contents("http://webcache.googleusercontent.com/search?q=cache:$f[$c]");
if(preg_match('/snapshot of the page as it appeared on (.*)? GMT/',$d,$m) or preg_match('/по состоянию на (.*)? GMT/',$d,$m)){
print("$f[$c] $m[1]");
}
}


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
xsh
Отправлено: 12 Августа, 2011 - 10:35:59
Post Id



Новичок


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


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




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


-----
$хикикомори()
goodlook...goodtime...connect... offline...
 
 Top
OrmaJever
Отправлено: 12 Августа, 2011 - 10:54:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




xsh пишет:
OrmaJever запланировано что совпадения должны быть всегда и если сделать так:
PHP:
скопировать код в буфер обмена
PHP:
скопировать код в буфер обмена
  1. if(preg_match('/snapshot of the page as it appeared on (.*)? GMT/',$data,$match) or preg_match('/по состоянию на (.*)? GMT/',$data,$match)){

гугл использует кодировку utf (незнаю как остальные url), а для utf нужен флаг u иначе ничего не найдёт.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
xsh
Отправлено: 12 Августа, 2011 - 11:10:44
Post Id



Новичок


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


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




решение найдено ребят, OrmaJever да ты прав, нужен флаг, но вовсе не там.
вот решение:
PHP:
скопировать код в буфер обмена
  1. $file = file('url.txt', FILE_IGNORE_NEW_LINES);

всем спасибо.

(Отредактировано автором: 12 Августа, 2011 - 11:19:25)



-----
$хикикомори()
goodlook...goodtime...connect... offline...
 
 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