Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wycinanie tekstu
Forum PHP.pl > Forum > PHP
damians
Witam

Mam bardzo dziwny i jak dla mnie trudny problem. Tak sie zastanawiam i niewiem czy to wogóle mozliwe:
  1. <tr class="t11" bgcolor="#4a473e"><td colspan="8" class="og">02-01 Poniedziałek</td></tr><tr class="t11" style="background: rgb(150, 148, 106) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" height="25"><td class="o">
  2. 1899</td><td class="o">
  3. 13:00</td><td class="o">
  4. West Bromwich - Aston Villa</td><td class="o">
  5. 2.30</td><td class="o">
  6. 3.10</td><td class="o">
  7. 2.70</td><td class="o">
  8. 1.32</td><td>
  9. 1.44</td></tr><tr class="txt_11" style="background: rgb(195, 193, 160) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" height="25"><td class="o">
  10. 1900</td><td class="o">
  11. 13:45</td><td class="o">
  12. West Ham - Chelsea</td><td class="o">
  13. 5.60</td><td class="o">
  14. 3.50</td><td class="o">
  15. 1.50</td><td class="o">
  16. 2.15</td><td>
  17. 1.05</td></tr>


To jest kawałek źródła strony.
Jak mam wyciągnać dane:
- zespół
-3 pierwsze kursy.

W rezultacie żeby zobaczyć:
West Bromwich - Aston Villa 2.30 3.10 2.70
West Ham - Chelsea 5.60 3.50 1.50

próbowałem funkcja explode ale mi nie wychodzi ;/ A trzeba także zaznaczyć ze tu w przykładzie są tylko 2 mecze ale zwykle jest zdecydowanie wiecej.

Prosze o odpowiedź bo to dla mnie dosć wazna sprawa.
dtb
  1. <?php
  2. preg_match_all ('#([A-Za-z- ]+)</td><td class="0">
  3. ([0-9.]+)</td><td class="0">
  4. ([0-9.]+)</td><td class="0">
  5. ([0-9.]+)</td><td class="0">#', $zrodlo_html, $wynik);
  6. print_r ($wynik);
  7. ?>


nie testowane ale powinno działać. gdyby jednak nie działało to daj znak "\" przed każde "<", ">" i "/".

EDIT: możesz również spróbować u uzyciem jakiegoś pasera xml (o ile strona z której chcesz pobrać dane jest zgodna z xhtmlem)
lenczewski
ja zmieniłem trochę skrypt kursu walut
  1. <?php
  2. function httpGet ( $file_name ) {
  3.     $file = fopen($file_name, "r");
  4.     while (!feof ($file)) { $buffer = fgets($file, 4096);
  5.         $out .= $buffer;
  6.         if ( $buffer == "" ) { fclose($file); return strip_tags($out); }
  7.     } fclose ($file);
  8.     return strip_tags($out);
  9. }
  10. $t = @httpGet("text.txt");
  11.  
  12.  @preg_match_all("/(.*)*/", $t, $matches);
  13.  # print_r($matches);
  14.  
  15. for($i=6;$i<=22;$i++)
  16. {
  17.     echo $matches[0][$i] . ' - ' . $matches[0][$i+2] . ' ' . $matches[0][$i+4] . ' ' . $matches[0][$i+6] . '<br>'. "n";
  18.     $i+=15;
  19. }
  20. ?>

gdzie Twój plik text.txt zawiera:
Kod
<tr class="t11" bgcolor="#4a473e"><td colspan="8" class="og">02-01 Poniedziałek</td></tr><tr class="t11" style="background: rgb(150, 148, 106) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" height="25"><td class="o">
1899</td><td class="o">
13:00</td><td class="o">
West Bromwich - Aston Villa</td><td class="o">
2.30</td><td class="o">
3.10</td><td class="o">
2.70</td><td class="o">
1.32</td><td>
1.44</td></tr><tr class="txt_11" style="background: rgb(195, 193, 160) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" height="25"><td class="o">
1900</td><td class="o">
13:45</td><td class="o">
West Ham - Chelsea</td><td class="o">
5.60</td><td class="o">
3.50</td><td class="o">
1.50</td><td class="o">
2.15</td><td>
1.05</td></tr>

Skrypt działa pod adresem: http://fabian.art.pl/php/php.php
Źródło: http://fabian.art.pl/php/kolor.php
Twój plik: http://fabian.art.pl/php/text.txt
damians
DZIEKI DZIEKI DZIEKI.
to działa jak nalezy smile.gif jeszcze raz dzieki.

tylko mam jedno pytanko tak z ciekawości:
w zapytaniu:
  1. <?php
  2. @preg_match_all("/(.*)*/", $t, $matches);
  3. ?>

co daje to wyrażenie: (.*)*


A zrobiłem coś takiego ze usunołem entery i teraz jest ciagły text i juz niedziała ten skrypt.
lenczewski
preg_match_all
Pattern Syntax

Zachęcam także do lektury: http://bedkowski.pl/php_regex/1/
Rafiki
Mam jedno pytanie, jezeli chcialbym utworzyc podobny skrypt ale nie wczytanie danych z plikow .txt z servera ale pobranie zawartosci strony ( kodu html ) ktory nie znajduje sie na serverze czyli np strony www.company.com (;
lenczewski
Rafiki >
...i tu właśnie po to jest funkcja httpGet(),
  1. <?php
  2. $tmp = @httpGet("http://www.company.com");
  3. ?>
Rafiki
hmm zdzwilo mnie ze to poprostu za pomoca funkcji fopen i fgets nie zadziala a jednak winksmiley.jpg

A ja w manualu szukalem opcji na wzor ftp_get smile.gif tylko dla http smile.gif

dzieki za pomoc.
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.