Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][PHP][curl] Problem z obrazkiem
Forum PHP.pl > Forum > Przedszkole
roobik
Witam.
Dość dawno nie pisałem wink.gif W sumie piszę tylko, gdy mam jakiś poważniejszy orzech. I tak jest tym razem.
Sprawa jest taka: na jednej ze stron obrazek zmienia się co kilkanaście minut (czasem co pół godziny).
I chciałebym ten własnie obrazek wyłuskać.
Zrobiłem więc tak:
  1. $strona = 'http://www.jakas_strona.pl';
  2. $now = curl_init($strona);
  3. curl_setopt($now, CURLOPT_RETURNTRANSFER, true);
  4. $Stronka = curl_exec($now);
  5. curl_close($now);
  6.  
  7. preg_match_all("/\<div class\=\"content_mv\" style=\"background: url(sites\/images\/news\/(.*?).jpg)\"><\/div\>/mi", $Stronka, $Wynik);
  8.  
  9. for($i=0;$i<count($Wynik[1]);$i++)
  10. {
  11. echo $Wynik[1][$i];
  12.  
  13.  
  14. }
  15.  
  16. echo '<br><br><hr>test';print_r($Wynik);

ale wyświetla mi:
Cytat
testArray ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) )


Myślałem, że już w sumie wyrażenia regularne znam, a tu niespodzianka....
Pomóżcie plis... bo nie wiem nawet, gdzie robię babola sad.gif
trueblue
Dlaczego \= ?
Do testów polecam: http://www.regexr.com/
roobik
Cytat(trueblue)
Dlaczego \= ?

Dlaczego CO, bo nie rozumiem tej odpowiedzi (nie mam pokazanej przez Ciebie kolejności znaków)...
nospor
Tu masz to o czym wspomniano
class\=
No jednal linijka tekstu i sam nie widzisz co piszesz nawet jak ci palcem wytkną?

Poza tym, skad mamy wiedziec czy ogolnie napisales poprawne wyrazenie, skoro nie wiemy jak wyglada ciag ktorego szukasz
roobik
nospor, ja po prostu nie wiedziałem, o co trueblue pyta. Bo naprawdę różnie można interpretować pytanie "Dlaczego?" wink.gif
OK... No problem

Ogólnie linia, która mnie interesuje, wygląda (mniej więcej) tak:
  1. <div class="content_mv" style="background: url(sites/images/news/201407191334.jpg) center top no-repeat; height: 60px; width: 75px;"></div>

Piszę "mniej więcej", ponieważ (jak pisałem wcześniej) nazwa obrazka zmienia się w ciągu doby kilkanaście/kilkadziesiąt razy...


Zauważyłem też, że nazwa obrazka składa się z daty i godziny (ale akurat to ma najmniejsze znaczenie) wink.gif
nospor
Zapytal: dlaczego uzywasz \= kiedy ten \ nie ma tam sensu i powinno byc tylko =. Nie wiem co tam mozna roznie interpretowac smile.gif

Za to kropke . powinienes poprzedzac \ jesli szukasz kropki a nie dowolnego znaku.

Poza tym sprawdzales w ogole czy Twoj cURL zwraca to co powinien?

Kolejnym znakiem specjalnym są nawiasy i jesli nie poprzedzisz ich \ to będą traktowane jako znak specjalny. A przeciez ty nawiasy masz w szukanym tekscie.

Wniosek: nie znasz jednak tak dobrze wyrazen jak myslales, skoro lezysz na takich podstawach jak to, co jest znakiem specjalnym a co nie.
roobik
Taką metodę stosowałem już niejednokrotnie (kopiowałem kod, zmieniałem to, co mnie interesuje i hulało).
A teraz po prostu nie wiem, gdzie mam babola.
Usunąłem slash'a, ale i tak to nic nie dało sad.gif
Dalej jest to samo:
Cytat
testArray ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) )


//edit
Ale ja nigdzie nie napisałem, że DOBRZE znam, tylko, że "myślałem, że w sumie znam" (w domyśle: znam na tyle, że mi to wystarcza na moje "potrzeby") wink.gif
Jakbym je znał DOBRZE, to bym tu nie pisał raczej... hmmm...? wink.gif
nospor
Nie dosc ze miales usunac w jednym miejscu, to miales dodac w innych. Pisalem ci o znakach specjalnych, ktorych zapomniales oslashowac....

Zrob co pisalem, a potem pokaz kod po zmianach.
No i pytam poraz kolejny: sprawdzales czy w ogole cURL zwraca to co powinien?

edit:
Cytat
Ale ja nigdzie nie napisałem, że DOBRZE znam, tylko, że "myślałem, że w sumie znam"
No to nie znasz nawet w sumie, bo znajmosc znakow specjalnych to podstawa, by nie robic tak banalnych bledow, ktore wlasnie robisz
roobik
zmieniłem tę linię i teraz wygląda to tak:
  1. preg_match_all("/\<div class=\"content_mv\" style=\"background: url(sites\/images\/news\/\(.*?\).jpg)\"><\/div\>/mi", $Stronka, $Wynik);

niestety, nie pomogło


Cytat(nospor)
sprawdzales czy w ogole cURL zwraca to co powinien?

Resource id #1
sad.gif
ZaXaZ
Cytat(roobik @ 19.07.2014, 14:54:47 ) *
zmieniłem tę linię i teraz wygląda to tak:
  1. preg_match_all("/\<div class=\"content_mv\" style=\"background: url(sites\/images\/news\/\(.*?\).jpg)\"><\/div\>/mi", $Stronka, $Wynik);

niestety, nie pomogło


skasuj dla testu sprzed < > slashe, mam prega co tak dziala, poza tym chyba (.*?) jednego brakuje a w pierwszym to niewiem do czego ci slash

moze moj preg niepoprawny ale dziala
  1. "/<span class\=\"Cell1\" >(.*?)<\/span>/s"
roobik
Cytat(ZaXaZ)
skasuj dla testu sprzed < > slashe


Już tak próbowałem, ale wyskakiwał błąd:
Cytat
Unknown modifier '<'


Cytat(ZaXaZ)
mam prega co tak dziala


Też miałem podobnie przy jednym z poprzednich kodów smile.gif
by_ikar
  1. <?php
  2.  
  3. $str = '<div class="content_mv" style="background: url(sites/images/news/201407191334.jpg) center top no-repeat; height: 60px; width: 75px;"></div>';
  4.  
  5. preg_match('#<div[\s]+class="content_mv"[\s]+style="[\w\s:]+url\(([\w\/\.]+)\)[^>]+>#', $str, $matches);
  6.  
  7. var_dump($matches);
nospor
Cytat
Resource id #1

Co ty sprawdzales? Miales sprawdzic zmienną $Stronka
roobik
I O TO CHODZI smile.gif
Dzięki bardzo!
Resztę już zrobię sam

nospor - fakt, nie sprawdziłem tego dokładnie (literówka, a potem parę odp na Forum)
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.