Skocz do zawartości

[PHP]Wyrażenia regularne - problem z obrobieniem


ghacek

Rekomendowane odpowiedzi

Chce napisać skrypcik wyciągający ceny i nazwy produktów z interesujących mnie stron oto on: Problem jest taki, że skrypt wyciąga ceny i nazwy ale źle je przyporządkowuje jest to spowodowane tym, że na stronach są często wyświetlane dwie ceny dla jednego produktu. Kombinowałem z wyświetlaniem $matches[0][$b-1] oraz $matches1[0][$b-1] w zależności od wyniku instrukcji warunkowej ale nic to nie dawało.

Generalnie chodzi o to aby program wyświetlał dopasowanie nazwa produktu -> cena a w przypadku gdy zajdzie warunek (czyli na stronie będzie dodatkowa cena) to zastępował starą cenę to nową dodatkowom.

<?php
$pattern = '/(<span class="productSpecialPriceListing">)?[0-9]{2,4},[0-9]{2}/';	//cena jako wyrażenie regularne opcjonalnie dodaje span class, której obecność później jest sprawdzana w instrukcji warunkowej 

$pattern1 = '/<big>(.*)<\/big>/';	//nazwa produktu jako wyrażenie


$url = array('www.strona1.pl', 'www.strona2.pl', 'www.strona3.pl');  //lista stron do przeskanowania


for ($i=0; $i<count($url); $i++)   {
$zawartosc = file_get_contents($url[$i]);

$ile = preg_match_all($pattern, $zawartosc, $matches, PREG_PATTERN_ORDER);	 //szukamy wzorca ceny
$ile1 = preg_match_all($pattern1, $zawartosc, $matches1, PREG_PATTERN_ORDER);  //szukamy wzorca nazwy produktu


for ($b=0; $b<$ile1; $b++) {

if (strpos($matches[0][$b], 'productSpecialPriceListing') !== false) {	 //jesli cena JEST cena promocyjna to..
$matches[0][$b] = str_replace('<span class="productSpecialPriceListing">', '', $matches[0][$b]);  //usuwamy	 niepotrzebny przedrostek i co dalej... ?  <- Tu jest problem i trzeba dopisać jakąś instrukcję filtrującą wyniki

  }

echo 'Dla produktu <strong> ' . $matches1[0][$b] . ' </strong> cena wynosi <strong> ' . $matches[0][$b] . ' </strong> PLN <br>';
}
}
?>

Programista aplikacji webowych i pozycjoner w Edukey - Szkolenia komputerowe | programowanie w VBA

Polecam dobry i tani hosting w firmie masternet

logo-edukey-twojaeuropa.png

Odnośnik do komentarza
Udostępnij na innych stronach

A skąd mamy wiedzieć jak jest to zdefiniowane w kodzie źródłowym skoro nie podajesz adresów tylko swoje reguły do wyrażenia regularnego :)

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności