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

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.
В чем ошиПка?
 

Resurs

Новичок
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.
 

SiMM

Новичок
Resurs, ты думаешь, тут сидят телепаты? Понятия не имею - у меня нет под рукой твоего тестового файла. В любом случае, если у кого-то возникает проблема, он в первую очередь занимается отладкой, результат которой, как правило, отвечает на вопрос "почему?".
PS: и незачем дублировать безобразный код дважды.
 

Resurs

Новичок
Спасибо за наставление на путь истинный

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