Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Array() z preg_match_all
Forum PHP.pl > Forum > PHP
freqfreq
Witam.
Piszę skrypt do zapisywania danych ze strony giełdy papierów wartościowych do tablicy array().
Jeśli odwiedzicie stronę (http://www.gpw.pl/wyniki/tabelki.asp?Indeks=wszystkie_akcje_cj&lang=PL) zauważycie że dane są w sporej tabeli z pewną stałą ilością kolumn i sporą ilością wierszy.
Mój skrypt wygląda następująco:
Kod
         <?php
        
           function GPWparse(){
          
           $file = file_get_contents('http://www.gpw.pl/wyniki/tabelki.asp?Indeks=wszystkie_akcje_cj&lang=PL');
          
           $file = strip_tags($file, '<table><tr><td>');
           $file = str_replace(" onMouseOut=offColortr(this); onMouseOver=onColortr(this);", "", $file);
           $file = preg_replace("/ class=[a-z0-9]+/", "", $file);
           $file = preg_replace("/ _narrow/", "", $file);
           $file = preg_replace("/_narrow/", "", $file);
          
           preg_match_all("/<TR>\r?\n?\r?\n?\x20+?<TD><\/TD>\r?\n?\x20+?<TD>([a-zA-Z0-9\.\-]+)<\/TD>\r?\n?\r?\n?\x20+?<TD>([a-zA-Z0-9\.\-]+)<\/TD>\r?\n?\r?\n?\x20+?<TD>([0-9\:]*)<\/TD><TD>([0-9\,\-\x20]+)<\/TD><TD>([0-9\,\-\x20]+)<\/TD><TD>([0-9\,\-\x20]+)<\/TD><TD>([0-9\,\-\x20]+)<\/TD><TD>([0-9\,\-\x20]+)<\/TD><TD>([0-9\,\-\x20]+)<\/TD><TD>([0-9\,\-\x20]+)<\/TD><TD>([0-9\,\-\x20]+)<\/TD><TD>([0-9\,\-\x20]+)<\/TD><TD>([0-9\,\-\x20]+)<\/TD><TD>([0-9\,\-\x20]+)<\/TD><TD>([0-9\,\-\x20]+)<\/TD><TD>([0-9\,\-\x20]+)<\/TD><TD>([0-9\,\-\x20]+)<\/TD><TD>([0-9\,\-\x20]+)<\/TD><TD>([0-9\,\-\x20]+)<\/TD><\/TR>/im", $file, $matches);
          
           return $matches;
          
           }
          
           print('<pre>');
           print_r(GPWparse());
           print('</pre>');
        
         ?>


Pobiera on z każdego wiersza zawartości ustalonych komórek tabeli.
Kiedy jednak wyświetlimy tą tablicę array() zobaczymy że dane nie są pogrupowane przez funkcję preg_match_all w sposób umożliwiający ich dalsze sensowne użycie.
Chodzi mi o to, aby dane w tabeli zapisane były w następujący sposób:
Cytat
Array
(
[KOLUMNA 1] => Array
(
[KOMÓRKA 1] => WARTOŚĆ
[KOMÓRKA 2] => WARTOŚĆ
[KOMÓRKA 3] => WARTOŚĆ
[KOMÓRKA 4] => WARTOŚĆ
...ITD...
)
[KOLUMNA 2] => Array
(
[KOMÓRKA 1] => WARTOŚĆ
[KOMÓRKA 2] => WARTOŚĆ
[KOMÓRKA 3] => WARTOŚĆ
[KOMÓRKA 4] => WARTOŚĆ
...ITD...
)
[KOLUMNA 3] => Array
(
[KOMÓRKA 1] => WARTOŚĆ
[KOMÓRKA 2] => WARTOŚĆ
[KOMÓRKA 3] => WARTOŚĆ
[KOMÓRKA 4] => WARTOŚĆ
...ITD...
)
...ITD...
)

Po wielu próbach nie udało mi się sformatować tablicy w żądany sposób więc zwracam się o pomoc.

Pozdrawiam.
nowotny
Cytat(freqfreq @ 15.02.2008, 19:23:14 ) *
Kiedy jednak wyświetlimy tą tablicę array() zobaczymy że dane nie są pogrupowane przez funkcję preg_match_all w sposób umożliwiający ich dalsze sensowne użycie.

Ależ "dalsze sensowne użycie" jest jak najbardziej możliwe... smile.gif z czym masz problem dokładnie...
freqfreq
Cytat(nowotny @ 15.02.2008, 19:37:38 ) *
Ależ "dalsze sensowne użycie" jest jak najbardziej możliwe... smile.gif z czym masz problem dokładnie...


Hmm? To jak dostać się do wartości konkretnej komórki?
nowotny
Jakiej komórki...? :/
freqfreq
O matko.... idę wypić.
Mam nowe pytanie - jak obsługiwać suwaki w przeglądarce?... nie zjechałem na dół xX
sciana.gif wstydnis.gif withstupidsmiley.gif

EDIT:
Nigdy o nic tak naprawdę nie pytałem, to był balon meteorologiczny i mnie tu nie ma. Hmm co ja tu robię?
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.