Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]wyrazenia regularne
Forum PHP.pl > Forum > Przedszkole
webspy
Witam, czytałem trochę o wyciąganiu danych ze strony, udało mi się wyciągnąć kod źródłowy z danej strony ale nie mogę sobie poradzić z wyrażeniami regularnymi sad.gif jestem początkującym jeśli chodzi o php. Podany kod znalazłem właśnie na tej stronie.

  1. <?
  2. $curl = curl_init();
  3. curl_setopt($curl, CURLOPT_URL, 'http://adres strony');
  4. curl_setopt($curl, CURLOPT_REFERER, "http://www.google.pl/");
  5. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  6. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  7. curl_setopt($curl, CURLOPT_USERAGENT, 'Googlebot/2.1 (+http://www.googlebot.com/bot.html)');
  8. curl_setopt($curl, CURLOPT_TIMEOUT, 30);
  9. curl_setopt($curl, CURLOPT_HEADER, 0);
  10. $strona = curl_exec($curl);
  11. curl_close($curl);
  12.  
  13.  
  14. preg_match_all('wyrazenie regularne', $strona, $baza);
  15.  
  16. echo $baza[1][0];
  17. ?>
  18.  


Chciałbym z ze strony wyciągnąć dane które wyglądają nastepująco:

  1. <tr class="rowEven clickable">
  2. <td class="cellPhoto">
  3. <img src="http://photos02.allegroimg.pl/photos/64x48...74/52/868745275" width="64" height="48" alt="AGREGAT PRĄDOTWÓRCZY 3 KW 2800W!! FV SKLEP" title="AGREGAT PRĄDOTWÓRCZY 3 KW 2800W!! FV SKLEP"/>
  4. </a>
  5. </td>
  6. <td class="cellName">
  7. class="alleLink">
  8. <span>AGREGAT PRĄDOTWÓRCZY 3 KW 2800W!! FV SKLEP</span></a>
  9. </td>
  10. <td class="cellPrice"><img src="http://static.allegrostatic.pl/site_images...buy_now_ico.gif" alt="" title="" class="tomiddle" /> 899,00 zł</td>
  11. <td class="cellTrans">929,00 zł</td>
  12. <td class="cellOffer">-</td>
  13. <td class="cellTime">7 dni</td>
  14. </tr>
  15.  


Z góry dziękuję za pomoc.
Pawel_W
z tego co napisałeś nie wiele, można się dowiedzieć, ponieważ nie podałeś całego kodu strony winksmiley.jpg

podałeś, co chcesz wyciągnąć, ale co nam to daje?

na razie mogę polecić:
http://pl.wikibooks.org/wiki/PHP/Podstawy_...%84_regularnych
webspy
To zapytam inaczej, w jaki sposób wyświetlić wszystkie znaki znajdujące się między:
  1. <td class="cellName"> ....Tylko to chciałbym mieć w zmiennej.... </td>


questionmark.gifquestionmark.gif


kangur91
Jedyny sposób jaki przychodzi mi na myśl to użyć javascript'a, a to co wyciągnie przesłać np. JSON'em do php. Można użyć ajaxa.

Ale z pewnością ktoś zna lepszy i szybszy sposób;]
Pawel_W
  1. $text = '<td class="cellName"> ....Tylko to chciałbym mieć w zmiennej.... </td>';
  2. $patt = '#<td class="cellName">(.+)</td>#';
  3. preg_match($patt, $text, $match);
  4. print_r($match);
webspy
W sumie działa dzięki już troszkę rozumiem, ale jak mam więcej to nie działa:

  1. $text = '<td class="cellPhoto"><a href="http://jakas strona www.html"><img src="http://www.foapodi.foto.pl/340857203" width="64" height="48" alt="dddd" title=""/>
  2. </a></td>';
  3.  
  4. $patt = '#<td class="cellPhoto">(.+)</td>#';
  5.  
  6. preg_match($patt, $text, $match);
  7.  
  8. print_r($match);


Wiem już czego się zaczepić, pokombinuje trochę i może coś wymyślę.
Pawel_W
  1. $text = '<td class="cellPhoto"><a href="http://jakas strona www.html"><img src="http://www.foapodi.foto.pl/340857203" width="64" height="48" alt="dddd" title=""/>
  2. </a></td>';

nie wiem dlaczego, ale zadziała tylko jeśli
  1. $text = '<td class="cellPhoto"><a href="http://jakas strona www.html"><img src="http://www.foapodi.foto.pl/340857203" width="64" height="48" alt="dddd" title=""/></a></td>';
webspy
Dzięki, działa, już sobie poradzę z resztą smile.gif
Dzięki.
oscar17
Cytat(webspy @ 4.01.2010, 16:44:22 ) *
W sumie działa dzięki już troszkę rozumiem, ale jak mam więcej to nie działa:


bo masz znaki nowej linii wewnątrz $text, coś takiego powinno zadziałać:

  1. $text = '<td class="cellPhoto"><a href="http://jakas strona www.html"><img src="http://www.foapodi.foto.pl/340857203" width="64" height="48" alt="dddd" title=""/>
  2. </a></td>';
  3.  
  4. $patt = '#<td class="cellPhoto">(.+)</td>#s'; //tutaj dodany modyfikator s
  5.  
  6. preg_match($patt, $text, $match);
  7.  
  8. print_r($match);

poczytaj więcej o modyfikatorach tutaj: http://pl.php.net/manual/pl/reference.pcre...n.modifiers.php
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.