Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Curl zwraca pustą tablice
Forum PHP.pl > Forum > Przedszkole
Oczko21
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.
redeemer
  1. if(curl_exec($curl) === false) {
  2. echo 'Błąd curl ' . curl_error($curl);
  3. }
Oczko21
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
redeemer
Spróbój
  1. preg_match('/<div id="date"> (.*?) <\/div>/s', $strona, $matches);
Oczko21
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:
redeemer
  1. preg_match('/<div id="date">(.*?)?<\/div>/s', $strona, $matches);
Takie coś musi zadziałać smile.gif
Oczko21
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>
redeemer
zmienna $strona ma zawartość? Bo powinno działać
Oczko21
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?
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.