Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Część skryptu nie widzi zawartośći zmiennej a część ją widzi, Bardzo dziwna sprawa
--Cypis--
post 28.05.2011, 02:11:03
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
CuteOne
post 28.05.2011, 03:51:41
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


najpierw zobacz jak działa preg_match LINK
Go to the top of the page
+Quote Post
--Cypis--
post 28.05.2011, 04:34:47
Post #3





Goście







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.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 17:09