Скрипт некорректно работает (возможна проблема в циклах)

Redwind

Новичок
Скрипт некорректно работает (возможна проблема в циклах)

Господа! Я написал скрипт (то есть пытаюся написать), который подключается через сокеты к сайту, ищет какое - то слово, и выводит его на экран. Все бы ничего, но сайтов поиска много, поэтому приходится использывать циклы. Вот код:
PHP:
<?php
set_time_limit(0);

/* переработка адресов начало */
$clovolist=fopen("clovo-list.txt",'r');
$p=0;
while(!feof($clovolist))
{
$text=fgets($clovolist, 300);
$text=str_replace("http://", "", $text);
$clovolistmas[$p]=$text;
$p++;
}
$colvossilok=count($clovolistmas);
fclose($clovolist);
/* переработка адресов окончена */

/* перебираем ссылки */
   for ($ss=0; $ss<$colvossilok; $ss++)
   {
      /* разбиваем ссылку на части */
      $url=$clovolistmas["$ss"];
      $slesh=strpos($clovolistmas["$ss"], "/");
      $host=substr($url, 0, $slesh);
      $string=substr($url, $slesh);
      /* строка на части разобрана */

      /* открываем соединение */
      
      $fp = fsockopen ($host, '80', $errno, $errstr, 20);
         if (!$fp)
         {
         $errstr="<p align=center style='color:red'>Неудается подключится к серверу</p>";
         echo "$errstr<br>\n";
         }
         else
         {

         $zapros="GET ".$string." HTTP/1.0\r\nHost: ".$host."\r\n\r\n";
         fputs ($fp, $zapros);
         $base=fopen("clovo.txt", 'a');
            while (!feof($fp))
            {
            $i=0;
            $content=fgets($fp);
               if(ereg("([[:digit:]]+)([[:alnum:]])", $content, $links))
               {
               $zapis="$links[$i]\n";
               fwrite($base, $zapis);
               $i++;
               }
            }
         fclose($base);
         }
      fclose ($fp);
      }
      /* закрываем соединение */


?>
Возникает проблема при запуске: в текстовом файле содержатся ссылки на сайт, а обрабатывается только последняя ссылка из файла clovo-list.txt(то есть проходи полный цикл поиска и находит мне нужные слова). В чем моя ошибка(я думаю, что она с циклах, но найти так и не смог)? Может кто-то поможет?
 

Redwind

Новичок
На что конкретно обращать внимание? Господа! ткните меня носом в мою ошибку плиз(просто целый день на этой ошибке сижу).
 

Redwind

Новичок
Насколько я знаю file() удобно использовать, но здесь целесообразнее было fgets() использовать
 

Hummerstadt

Новичок
Redwind
вместо <= должно быть <
PHP:
for ($ss=0; $ss<=$colvossilok; $ss++)
в запросе возможно нужна еще строка Connection fsockopen
ereg
ну и массив $links в приведенном коде не задан
 

Redwind

Новичок
я изменил запрос, но это ничего не дало - скрипт все равно анализирует последнюю ссылку из файла clovo-list.txt
PHP:
$zapros="GET ".$string." HTTP/1.0\r\nHost: ".$host."\r\n\r\nConnection: Close\r\n\r\n"
P.S. Массив был задан в скрипте, я его просто до форума не донес.
 

Hummerstadt

Новичок
тогда ошибка в этой части
PHP:
            while (!feof($fp))
            {
            $i=0;
            $content=fgets($fp);
               if(ereg("([[:clovo:]]+)", $content, $links))
               {
               echo $links[$i];
               echo "<br>";
               $i++;
               }
не понятно что делает $i и что такое "([[:clovo:]]+)"
 

Redwind

Новичок
"([[:clovo:]]+)"- ну это я к примеру привел, а так здесь описывается то, что мне нужно найти с разными вариациями (ну там слово с цифрой на конце, вообщем "регулярные выражения в формате RegEx")
В этой части он перебирает строки полученные с сайта:
каждая последущая строка записывается в $content, если "([[:clovo:]]+)" найдено, то оно записывается в массив $links[$i] (вообще я думаю, что код
PHP:
 echo $links[$i];  echo "<br>";
заменю на код записи в файл).
Я сомневаюсь, что здесь может быть ошибка, так как этот код отвечает за перебор строк в уже созданном соединении.
 

Hummerstadt

Новичок
ты предлагаешь ткнуть тебя носом в ошибку, в то время как:
1) сначала код приводишь неполностью
2) потом код дополняешь, но не до конца
а очень уставший программист (это я) играет с тобой в морской бой, пытаясь угадать, где ошибка, а где просто утаенный кусочек кода
$links создается каждый раз заново, поэтому ты видишь последнее значение и причем чудом )
 

Redwind

Новичок
Код выложил отредактированный (дописал запись в файл).

Список создается каждый раз заново, но он должен записыватся в файл clovo.txt

Поправьте меня если я не прав:
во время $clovolist'вого (цикл for выполняется $clovolist раз) прохода цикла for открывается $ss соединение
открывается файл clovo.txt,
выполняет цикл while,
список записывается в clovo.txt,
файл закрывается,
соединение закрывается
начинается следующий заход цикла for

Ему должно быть все равно какой был список, ведь он уже записался в файл. Почему в файл записываются результаты только последнего соединения?

-~{}~ 09.02.06 23:48:

Ну мужики! будьте мужиками :) Помогите
 

Hummerstadt

Новичок
Автор оригинала: Redwind
Почему в файл записываются результаты только последнего соединения?
потому что скрипт работает согласно написанному коду, а не ожиданиям

>$links создается каждый раз заново
>
 
Сверху