Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Curl zwraca pustą tablice
Oczko21
post 11.04.2012, 16:03:28
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 12.07.2009

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


Witam,
Mam taki problem.
Chciałbym pobrać date z innej strony, fragment kodu w którym znajduje się data wygląda tak:
  1. <div id="date">
  2. 11 Kwiecień 2012
  3. </div>

Mój kod:

  1. $curl = curl_init();
  2.  
  3. curl_setopt($curl, CURLOPT_URL, $url);
  4. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  5. $strona = curl_exec($curl);
  6. curl_close($curl);
  7. preg_match('/<div id="date"> (.*?) <\/div>/', $strona, $matches);
  8.  
  9. print_r($matches);



I niestety zwraca pustą tablice. Sprawdzałem wyrażenie regularne na generatorze i było wszystko wporządku.

Ten post edytował Oczko21 11.04.2012, 16:04:34
Go to the top of the page
+Quote Post
redeemer
post 11.04.2012, 16:07:02
Post #2





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


  1. if(curl_exec($curl) === false) {
  2. echo 'Błąd curl ' . curl_error($curl);
  3. }


--------------------
Go to the top of the page
+Quote Post
Oczko21
post 11.04.2012, 16:12:06
Post #3





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 12.07.2009

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


Cytat(redeemer @ 11.04.2012, 17:07:02 ) *
  1. if(curl_exec($curl) === false) {
  2. echo 'Błąd curl ' . curl_error($curl);
  3. }


Nic nie zwróciło
W zmiennej $strona jest pobrana cała zawartość strony, mogą ją wyświelić, ale jakoś nie mogę jej rozbić na kawałki
Go to the top of the page
+Quote Post
redeemer
post 11.04.2012, 16:14:34
Post #4





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


Spróbój
  1. preg_match('/<div id="date"> (.*?) <\/div>/s', $strona, $matches);


--------------------
Go to the top of the page
+Quote Post
Oczko21
post 11.04.2012, 16:20:02
Post #5





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 12.07.2009

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


Cytat(redeemer @ 11.04.2012, 17:14:34 ) *
Spróbój
  1. preg_match('/<div id="date"> (.*?) <\/div>/s', $strona, $matches);

spróbowałem i wywołałem print_r, wynikiem jest dalej pusta tablica:
Go to the top of the page
+Quote Post
redeemer
post 11.04.2012, 16:25:22
Post #6





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


  1. preg_match('/<div id="date">(.*?)?<\/div>/s', $strona, $matches);
Takie coś musi zadziałać smile.gif


--------------------
Go to the top of the page
+Quote Post
Oczko21
post 11.04.2012, 16:29:12
Post #7





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 12.07.2009

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


Cytat(redeemer @ 11.04.2012, 17:25:22 ) *
  1. preg_match('/<div id="date">(.*?)?<\/div>/s', $strona, $matches);
Takie coś musi zadziałać smile.gif


Niestety, dalej to samo :/
Jeżeli to jest jakaś różnica to dokładny fragment kodu z datą wygląda tak:
  1. <div id="date"> 11 kwiecień 2012 </div>
Go to the top of the page
+Quote Post
redeemer
post 11.04.2012, 16:37:02
Post #8





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


zmienna $strona ma zawartość? Bo powinno działać


--------------------
Go to the top of the page
+Quote Post
Oczko21
post 11.04.2012, 17:58:38
Post #9





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 12.07.2009

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


Cytat(redeemer @ 11.04.2012, 17:37:02 ) *
zmienna $strona ma zawartość? Bo powinno działać

Tak, ma zawartość.
Właśnie się z tym uporałem, musiało być coś nie tak z tym wyrażeniem regularnym bo spróbowałem takiego:
  1. preg_match('/<div[^>]+id="date">(.+?)<\/div>/ism', $strona, $matches);

I zadziałało bez zarzutu.
Dzięki za poświęcony czas : )

Przepraszam za podwójny post, ale szkoda zakładać drugi temat a problem poniekąd dotyczy właśnie i tego tematu
Otóż, jak pewnie wyczytaliście z góry, pobieram curlem date z innej strony wszystko ładnie, pięknie tylko pojawia się dziwny znak pomiędzy wyrazami w tym stringu.
Nie widać tego na stronie, a dopiero w bazie danych, wygląda to tak:

11Â kwiecieńÂ 2012


próbowałem użyć str_replace, ale nie pomogło. Czy to wina bazy czy właśnie tego że dane pochodzą z innej strony?

Ten post edytował Oczko21 11.04.2012, 16:39:54
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: 14.08.2025 - 15:51