Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ładowanie zewnętrznej strony oraz szukanie w jej źródle ciągu znaków.
Forum PHP.pl > Forum > PHP
jakal
Chciałbym załadować stronę o podanym adresie (np. www.test.pl a nie www.test.pl/index.html).
Przeszukać jej źródło szukając pewnego ciągu znaków.
Zwrócić wynik wyszukiwania (TRUE lub FALSE)

Robię to tak:

  1. <?php
  2. function checkblog($url)
  3. {
  4. $fp = fsockopen($url, 80, $errno, $errstr, 30);
  5.  
  6. if (!$fp)
  7. {
  8. echo "$errstr ($errno)<br>\n";
  9. }
  10. else
  11. {
  12. // odczytanie wszystkich danych ze strumienia
  13. $html = '';
  14.  
  15. while (!feof($fp))
  16. {
  17. $html .= fgets($fp, 128);
  18. }
  19. fclose($fp);
  20.  
  21. // sprawdzenie czy w zmiennej jest ciąg nazków
  22. if(preg_match('/to chce znaleźć w źródle strony/', $html))
  23. {
  24. return TRUE;
  25. }
  26. else
  27. {
  28. return FALSE;
  29. }
  30. }
  31. }
  32. ?>


Taki skrypt niestety nie chciał się zakończyć (lub próbował wiele razy się łączyć) i serwer padł ;p
Coś jest z nim nie tak, co takiego?

Jak można ten problem rozwiązać w inny sposób?
wrzasq
nie mozesz uzywac !feof() na sockecie (nie w tym wypadku). musisz uzyc while($data = fgets($fp)). ale czy nie prosciej uzyc prostego file_get_contenst()? a jesli bys chcial do niego dodac jakies przesylanie danych w stylu POST to uzyj stream_context_create().
jakal
Wielkie dzięki, pomogło.

Działa i dużo prościej smile.gif

Kod
    function checkblog($url)
    {
        $html = file_get_contents($url);
        
        if(preg_match('/tekst do szukania na stornie/', $html))
        {
            return TRUE;
        }
        else
        {
            return FALSE;
        }
    }
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.