Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Część skryptu nie widzi zawartośći zmiennej a część ją widzi, Bardzo dziwna sprawa
--Cypis--
post
Post #1





Goście







<?

Witam,

Napisałem prosty skrypt, który sprawdza dostępność adresu www:


  1. $resultx = mysql_query($sql);
  2.  
  3.  
  4. if(mysql_num_rows($resultx) > 0) {
  5.  
  6.  
  7. while($row123 = mysql_fetch_assoc($resultx))
  8.  
  9. {
  10.  
  11. echo $id=$row123['id'];
  12. echo " ";
  13. echo $i=trim($row123['link']);
  14. $nazwa = file_get_contents($i);
  15.  
  16. if (preg_match('/przepraszamy/ims',$nazwa)) { echo "<span style='color:#ff0000'> blad </span><br/>";
  17.  
  18.  
  19. else { echo " ok <br/>"; }
  20.  
  21.  
  22.  
  23. }
  24.  
  25.  
  26. }


W linku który jest parametrem występuje przekierowanie 301 i
  1. echo $nazwa = file_get_contents($i);

zwraca pusty wynik jednak, jakoś preg_match widzi jego zawartość,
gdyż jeśli na stronie występuje słowo 'przepraszamy' identyfikuje stronę jako niedziałająca, a jeśli go nie ma jako działającą.

Byłoby ok, ale część stron zwraca status 404 i dlatego postanowiłem dodać po preg_match regułkę:
  1. if (preg_match('/przepraszamy/ims',$nazwa) || empty($nazwa))
, czyli mamy coś takiego:



  1. $resultx = mysql_query($sql);
  2.  
  3.  
  4. if(mysql_num_rows($resultx) > 0) {
  5.  
  6.  
  7. while($row123 = mysql_fetch_assoc($resultx))
  8.  
  9. {
  10.  
  11. echo $id=$row123['id'];
  12. echo " ";
  13. echo $i=trim($row123['link']);
  14. $nazwa = file_get_contents($i);
  15.  
  16. if (preg_match('/przepraszamy/ims',$nazwa) || empty($nazwa)) { echo "<span style='color:#ff0000'> blad </span><br/>";
  17.  
  18.  
  19. else { echo " ok <br/>"; }
  20.  
  21.  
  22.  
  23. }
  24.  
  25.  
  26. }


Niestety po dodaniu tej reguły skrypt identyfikuje wszystkie strony jako błąd (jak mówiłem wcześniej echo $nazwa = file_get_contents($i); zwraca pusty wynik, więc niby pasuje, że zwraca błąd, ale
preg_match jakoś widzi wszystko)

Rozwiązaniem jest np. zastąpienie empty($nazwa)) czymś co rozpozna, że dana strona ma status 404.

Jak to można wykonać ?

P.S. Dlaczego mimo że $nazwa teoretycznie jest pusta, preg_match widzi jej zawartość i działa na niej ?


?>
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 21:55