Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyrazenia regularne i tabelki
Forum PHP.pl > Forum > Przedszkole
miszqa
Witam!!!

Mam taki problem. Otoz chce pobrac z witryny kilka informacji. I nie wiem czemu pobierajac tabelke nie dostaje nic.
Napisalem skrypt ale nie dziala mi jak nalezy
strona jest pod adresem www.nbp.pl/kursy/kursya.html
i chodzi mi o wybranie ceny USD, CHF i GBP
  1. <?php
  2.  
  3. $adres=&#092;"www.nbp.pl/kursy/kursya.html\";
  4. $i=fopen($adres, &#092;"r\");
  5. while(!feof($i)) {
  6. $buffer=fgets($i, '8192');
  7. if(preg_match(&#092;"/(.*)/\", $buffer, $out)) {
  8. echo $out[0];
  9. }
  10. }
  11.  
  12. ?>

no i pojawia sie problem jak chce pobrac informacje zawarte w tabelach pomiedzy znacznikami <td> i </td>
chyba ze ktos ma inny pomysl na wyciagniecie tylko tych danych co napisalem (tj cen USD, GBP, i CHF) Aha ceny musza byc pobierane tylko z tej strony a nie z jakiegos innego serwisu.

Z gory wielkie dzieki

Pozdrawiam
crash
Twoje wyrażenie pobiera wszystko (. zastępuje każdy znak - manual)... Pokombinuj z: #<td>(.*)</td>#si
miszqa
lekko nie lapie
moze ktos by mogl opisac uzywanie znacznikow etc
a to ze pobiera wszystko to wiem tylko chodzi mi o pobranie wartosci opisanych wyzej. Moze ktos pomoze dalej
i co oznaczaja znaczniki # w tym przypadku?
bendi
Cytat(miszqa @ 2005-01-26 13:34:11)
moze ktos by mogl opisac uzywanie znacznikow etc

ano moglby winksmiley.jpg
cz. 2
Guest
a moze ktos napisze jakiegos gotowca sic! bede rowniez wdzieczny glownie chodzi o wycinanie wyrazen zawartych w tabelkach w znzcznikach tr i td
miszqa
kurde ludzie pomocy!!!!

probowalem z tymi wyrazeniami regularnymi probowalem je funkcjami do ciecia i nadal nie wiem jak wyciagnac te dane z przykladu. blagam pomozcie
crash
Patrzaj jaki ja dobry dla Ciebie snitch.gif

  1. <?php
  2. function pobierz_kurs($in)
  3. {
  4.     if($f = @fopen('http://www.nbp.pl/kursy/kursya.html', 'r'))
  5.     {
  6.         $dane = '';
  7.     
  8.         while(!feof($f))
  9.         {
  10.             $dane .= fgets($f);
  11.         }
  12.     
  13.         fclose($f);
  14.     
  15.         preg_match_all(&#092;"#<td class=\"bg[1-2]?\">[0-1]{1,3} ([A-Z]{3})</td>rn<td class=\"bg[1-2]?\">([0-9,]+)</td>#e\", $dane, $wynik);
  16.     
  17.         $out = array();
  18.         
  19.         for($i = 0; $i < count($wynik[1]); $i++)
  20.         {
  21.             if(in_array($wynik[1][$i], $in))
  22.             {
  23.                 $out[$wynik[1][$i]] = $wynik[2][$i];
  24.             }
  25.         }
  26.         
  27.         return $out;
  28.     }
  29.     else
  30.     {
  31.         return;
  32.     }
  33. }
  34.  
  35. $waluty = array('USD', 'CHF', 'GBP'); // kursy, których walut Cie interesują
  36.  
  37. $kursy = pobierz_kurs($waluty); // pobrane dane; np $kursy['USD'] zawiera kurs dolara...
  38.  
  39. print_r($kursy);
  40. ?>
miszqa
crashu: nie chce byc wscibski ale skrypt mi nic nie wyswietla, sorka ale popadam w zwatpienie w moje umiejetnosci php'a
prosze o pomoc w wyswietleniu tych danych,

z gory dziekuje
Guest
widze ze jednak nikt nie umie chyba tego wykonac.

ps. Miszqa dobry temat ale ja tez nie wiem jak to zrobic a to mi sie tez przyda
sf
Nie, że nikt nie umie tylko Wam się nie chce poszukać, pokombinować. Posiedziałem z pare minut i rozwiązałem lenie...
  1. <?php
  2. preg_match_all(&#092;"#([A-Z]{3})</td>#e\", $dane, $wynik);
  3. preg_match_all(&#092;"#([0-9,]+)</td>#e\", $dane, $wynik2);
  4. ?>
crash
Moja funkcja działała jak ją pisałem i teraz też działa, sprawdź w swojej konfiguracji czy masz uprawnienia do otwierania URL'i prez fopen()...
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.