OK rzeczywiście pomogło tylko mam problem z wydobyciem danych. Dla każdej wartości $url zwracane są dwie tablice wyników wie ktoś jak to wszystko wydrukować na ekran ? Spróbowałem czegoś takiego ale to zwraca tylko pierwszy wynik dla każdej strony z $url
<?php
$pattern = '/[0-9]{2,4},[0-9]{2} zł/'; //cena w formacie xx.xx zł lub xxx,xx zł lub xxxx,xx zł gdzie x - dowolna cyfra
$pattern1 = '/<big>(.*)<\/big>/'; //nazwa produktu umieszczona miedzy znacznikami <big></big>
$url = array('http://www.strona1.pl', 'http://www.strona2.pl', 'http://www.strona3.pl'); //lista stron do przeskanowania
for ($i=0; $i<count($url); $i++) {
$ile = preg_match_all($pattern, $zawartosc, $matches, PREG_PATTERN_ORDER
); $ile1 = preg_match_all($pattern1, $zawartosc, $matches1, PREG_PATTERN_ORDER
);
for ($b=0; $b<count($ile); $b++) {
echo 'Dla produktu <strong> ' . $matches1[0
][$b] . ' </strong> cena wynosi <strong> ' . $matches[0
][$b] . ' </strong> PLN <br>'; }
}
?>
OK już nieważne głupi błąd zamiast count($ile) powinno być $ile.
Mam jeszcze jedne problem, który nie wiem jak ugryźć od strony algorytmicznej. Chodzi o to, że może wystąpić cena promocyjna i ona powinna zastąpić cenę zwykłą. Oczywiście tę pętle poniżej nie działają prawidłowo bo nie mogą działać. Przykładowo skan dla url[1]=http://www.strona1.pl
odnajduje 5 cen zwykłych i 2 ceny promocyjne. Teraz chodzi o to aby te ceny zwykłe zastąpić odpowiadającymi im cenami promocyjnymi.
<?php
$pattern = '/[0-9]{2,4},[0-9]{2}/'; //cena jako wyrazenie regularne
$pattern1 = '/<big>(.*)<\/big>/'; //nazwa produktu jako wyrazenie
$pattern2 = '/<span class="productSpecialPriceListing">[0-9]{2,4},[0-9]{2}</span>/'; //cena promocyjna jako wyrazenie regularne
$url = array('http://www.strona1.pl', 'http://www.strona2.pl', 'http://www.strona3.pl'); //lista stron do przeskanowania
for ($i=0; $i<count($url); $i++) {
$ile = preg_match_all($pattern, $zawartosc, $matches, PREG_PATTERN_ORDER
); $ile1 = preg_match_all($pattern1, $zawartosc, $matches1, PREG_PATTERN_ORDER
); $ile2 = preg_match_all($pattern2, $zawartosc, $matches2, PREG_PATTERN_ORDER
); //zwraca ilosc zastapien
for ($b=0; $b<$ile; $b++) {
for ($c=0; $c=<$ile2; $c++) {
$matches[0
][$b] = str_replace($matches[0
][$b], $matches2[0
][$c], $matches[0
][$b]); }
echo 'Dla produktu <strong> ' . $matches1[0
][$b] . ' </strong> cena wynosi <strong> ' . $matches[0
][$b] . ' </strong> PLN <br>'; }
}
?>