Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Część skryptu nie widzi zawartośći zmiennej a część ją widzi
Forum PHP.pl > Forum > Przedszkole
-Cypis-
<?

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 ?


?>
CuteOne
najpierw zobacz jak działa preg_match LINK
-Cypis-
Hmm... działa jak trzeba.
U mnie jeśli na stronie występuje string pasujący do wzorca wykonuje się pewna część kodu i działa to jak najbardziej ok, mimo iż nie wiem dlaczego tak się dzieje.
Mam tylko problem, gdyż nie wiem jak sprawdzić czy dana strona zwraca błąd 404.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.