поиск в файлах html (foreach? fopen)

  • Автор темы Автор темы Resurs
  • Дата начала Дата начала

Resurs

Новичок
поиск в файлах html (foreach? fopen)

День добрый.

есть задача просмотра удаленных html-файлов и нахождения в них определенной строки.
Список файлов хранится в тхт-файле.
сам делаю так:

PHP:
$search = "search_word";

$f_cont=file("links.txt");
foreach($f_cont as $url)
{
     if (substr($url,0,3)=="www")
        {
         $url="http://".$url;
         }

     if ($openfile = fopen("$url", "r") )
         {
           echo "Открыл...<br>";
			}
     else
         {
            echo "Не открыл...<br>";
          }

       if ($file_s = fread($openfile, 200000))
          {
             $q=strlen($file_s);
            echo "Прочитал...<br> длина строки - $q";
          }
       else{echo "Не прочитал...<br>";}

         if (eregi($search, $file_s))
             {
                 echo $url." -   Попался! <br><br>";
			}
          else
  	{
		echo $url." - Ни фига не нашел <br>";
 	}

Так вот, по итогам выполнения скрипта, совпадение поисковой фразы происходит только в последнем(по списку в файле links.txt) url-e и длина строки $q для всех адресов файлов кроме последнего равна 1990.
В чем ошиПка?
 
Originally posted by SiMM
Интересно, зачем делать fread, если файл открыть не удалось? Зачем делать сравнение, если файл не прочитался? Зачем делать то, на что вполне хватит [m]strpos[/m] через eregi?
Код оформлен безобразно :(
PHP FAQ: Ничего не работает! Что делать???
Согласен.

PHP:
$f_cont=file("links.txt"); 
foreach($f_cont as $url) 
{ 
		 if (substr($url,0,3)=="www") 
		   { 
			$url="http://".$url; 
		   } 

		if ($openfile = fopen("$url", "r") ) 
		   { 
			 echo "Открыл...<br>"; 
			 
			  if ($file_s = fread($openfile, 200000)) 
					 { 
					    $q=strlen($file_s); 
					    echo "Прочитал...<br> длина строки- $q<BR>"; 
					     
						  if (strpos($file_s, $search) !==false ) 
								 { echo $url." -   Попался! <br><br> "; 
								  
								  }    
								  else 
								  { 
									echo $url." - Ничего не нашел<br>";
								 }
					
					 }
           else{
			           echo "Не прочитал...<br>";
					}
		  }
else 
		{ 
		 echo "Не открыл...<br>"; 
		} 
}

но вопрос в другом:
Почему совпадение поисковой фразы происходит только в последнем(по списку в файле links.txt) url-e и длина строки $q для всех адресов файлов кроме последнего равна 1990.
 
Resurs, ты думаешь, тут сидят телепаты? Понятия не имею - у меня нет под рукой твоего тестового файла. В любом случае, если у кого-то возникает проблема, он в первую очередь занимается отладкой, результат которой, как правило, отвечает на вопрос "почему?".
PS: и незачем дублировать безобразный код дважды.
 
Спасибо за наставление на путь истинный

Ашипка как всегда заключалась в невнимательном прочтении мана про функцию file().
Примечание: каждая строка в результирующем массиве будет содержать символ конца строки, поэтому вам нужно будет использовать trim(), если символы конца строки вам не нужны.
Всем спасибо.
 
Сверху