Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Curl - filtrowanie zawartości strony
Forum PHP.pl > Forum > Przedszkole
busyboy
Witam

Mam pytanko odnosnie filtrowania wyniku dzialania curl. Czy mozna jakosc filtrowac wynik ktory zostaje wywolany za pomoca :

  1. curl_exec($ch)


Chodzi mi o wyciaganie kontretnych danych np adresu www na wyswietlonej stronie.

Pozdrawiam
BusyBoy
gorden
nagłówki? curl_getinfo + CURLINFO_HTTP_CODE
a jeśli chodzi Ci o treść to zapisz curl_exec do zmiennej i użyj np. wyrażeń regularnych
Pawel_W
zainteresuj się CURLOPT_RETURNTRANSFER
busyboy
Zrobilem cos takiego :

  1. $html = curl_exec($ch);
  2. curl_close($ch);
  3.  
  4. preg_match_all('#<title>(.*)<title>#sUi', $html, $text, PREG_PATTERN_ORDER);
  5. echo $text[1][0];


Wywala mi blad sad.gif

  1. Notice: Undefined offset: 0 in
piotrooo89
na początek zrób:

  1. print_r($text);
cycofiasz
A nie czasami

  1. <title>(.*)</title>


?
busyboy
Cytat(piotrooo89 @ 8.01.2012, 23:13:16 ) *
na początek zrób:

  1. print_r($text);


Po wpisaniu powyzszego kodu wyswietla mi

  1. Array ( [0] => Array ( ) [1] => Array ( ) )

piotrooo89
no więc widzisz, że Twoje wyrażenie nie działa. spróbuj zastosować to co podał @cycofiasz.
busyboy
Sorki ale w tej kwestii jestem straszna noga sad.gif po wprowadzeniu tego wyrazenia mam kolejny blad

  1. preg_match_all ('<title>(.*)</title>', $html, $text, PREG_PATTERN_ORDER);
  2. print_r($text);


  1. Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '('
piotrooo89
no ale to już podstawy podstaw, weź poczytaj o tym.

Kod
'#<title>(.*)</title>#'
busyboy
Nie wiem w jakiej formie sa zapisywane dane do zmiennej $html ale caly czas mam :

  1. Array ( [0] => Array ( ) [1] => Array ( ) )


Kod jest naspeujacy

  1. $html = curl_exec($ch);
  2. curl_close($ch);
  3.  
  4. preg_match_all ('#<title>(.*)</title>#', $html, $text, PREG_PATTERN_ORDER);
  5. print_r($text);


Moge prosic o jakies wskazowki ?
cycofiasz
Będziemy się tak bawić w kotka i myszkę? Podaj całość kodu, łącznie z adresami z których pobierasz dane. Upewnij się że w $html jest źródło strony zawietające <title>coś</title>
piotrooo89
i pokaż od razu co masz w zmiennej $html.
busyboy
Calość kodu ponizej :

  1. <?php
  2. $config['address'] = 'http://www.poczta.wp.pl';
  3.  
  4. $path['cookie'] = dirname(__FILE__).'/cookies.txt';
  5.  
  6. $ch = curl_init($config['address'].'');
  7. curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
  8. curl_setopt($ch, CURLOPT_HEADER, true);
  9. curl_setopt($ch, CURLOPT_COOKIEFILE, $path['cookie']);
  10. curl_setopt($ch, CURLOPT_COOKIEJAR, $path['cookie']);
  11.  
  12. $html = curl_exec($ch);
  13. curl_close($ch);
  14.  
  15. preg_match_all ('#<title>(.*?)</title>#', $html, $text, PREG_PATTERN_ORDER);
  16. print_r($text);
  17. ?>


Przepraszam ze tak nie odrazu zamiescilem calosci. Moze teraz bedzie jasniej.
piotrooo89
ale co masz w zmiennej $html?
busyboy
W zmiennej $html po wyswietleniu za pomoca

  1. echo $html;


jest wyswietlona wartosc 1 - nic wiecej.
Pawel_W

curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);

Boże, widzisz i nie grzmisz... smile.gif
cycofiasz
Na dodatek http://www.poczta.wp.pl robi przekierowanie a on nie dodał CURLOPT_FOLLOWLOCATION...

Człowieku, zabierasz się do tego od pupy strony! Najpierw naucz się poprawnie pobierać strony do zmiennych, później dopiero je parsuj...


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.