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>');
?>
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...
)
(
[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.