Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Ładowanie konkretnej części strony
Forum PHP.pl > Forum > Przedszkole
kaiba55
Witam. Otóż chciałbym sobie zrobić narzędzie pobierające ile jaka strona ma podstron w google. Na razie wpadło mi do głowy jedynie ładowanie przez file get contens danej strony np.: http://www.google.pl/search?hl=&q=site...26bd2e1ea203435

Tylko tak. To ładuje mi całą stronę, a mnie by interesowało tylko sam wynik: 95,300

Czy z pomocą tej funkcji uda się osiągnąć zamierzony efekt, czy trzeba to zrobić inaczej?
amii
No raczej trzeba to zrobić inaczej file_get_contents wczytuje ci stronę przekazaną jako argument i zwraca ciąg znaków będący treścią strony.

Możesz to zrobić tak (choć pewnie są lepsze sposoby), nie wiem czy zadziała bo pisane na szybko z palca

  1. $url = 'www.onet.pl'; //przykladowy url
  2. $znaki = file_get_contents('http://www.google.pl/search?hl=pl&source=hp&biw=1152&bih=670&q=site%3A'.$url); //pobieramy ciag znakow
  3. $pattern = '/<div id="resultStats">Około (.*) wyników/';
  4. preg_match($pattern, $znaki, $matches);
  5. echo $matches[0]; //tu powinien wyswietlic sie wynik
kaiba55
dzięki za gotowca, ale prosiłbym o w miare wyjaśnienie mi to, a konkretniej:

Kod
#
preg_match($pattern, $znaki, $matches);
amii
To instrukcja wyszukująca w tekście $znaki wyrażenie regularne określone w $pattern wyniki dopasowań zwracane są w $matches, przy czym biorąc część wyrażenia w nawias właśnie tą część masz zwracaną.

Generalnie wszystko masz opisane w manualu i radzę go czytać bo to absolutna podstawa i bez tego daleko nie zajedziesz -> http://pl2.php.net/preg_match

kaiba55
zrobiłem sobie tak i mam gdzieś błąd, a ja nie moge znaleźć, niekierowałbyś mnie:

Kod
<?php

$znaki = file_get_contents('http://www.google.pl/search?hl=&q=site%3Ahaag.pl&sourceid=navclient-ff&rlz=1B3GGLL_plPL388PL388&ie=UTF-8);
$pattern = 'Około (.*) wyników';
preg_match($pattern, $znaki, $matches);
echo $matches[0];  //tu powinien wyswietlic sie wynik

?>


Błąd jest jakiś podstawowy Parse error: syntax error, unexpected T_STRING a ja nie moge znaleźć dalej naprawy go...
amii
Nie masz domkniętego ciągu znaków tutaj:

$znaki = file_get_contents('http://www.google.pl/search?hl=&q=site%3Ahaag.pl&sourceid=navclient-ff&rlz=1B3GGLL_plPL388PL388&ie=UTF-8');

Tu masz kolejny błąd, nie wiem czemu zmieniasz to na ciąg znaków to jest wyrażenie regularne, które musi być określone i sparsowane. Zrób tak jak dałem w przykładzie:
$pattern = 'Około (.*) wyników';
kaiba55
teraz mam taki kod:

Kod
<?php

$znaki = file_get_contents('http://www.google.pl/search?hl=&q=site%3Ahaag.pl&sourceid=navclient-ff&rlz=1B3GGLL_plPL388PL388&ie=UTF-8');
$pattern = '/<div id="resultStats">Około (.*) wyników/';
preg_match($pattern, $znaki, $matches);
echo $matches[0];  //tu powinien wyswietlic sie wynik

?>


Ale coś nie działa: http://testy.blog4web.pl/index.php

amii
Daj na samym początku pliku raportowanie błędów:
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

Spróbuj może dać: echo $matches[1];
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.