Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Parser danych i problem z przypisaniem do danego rekordu gdy "brak danych"
Forum PHP.pl > Forum > Przedszkole
marko333
Witam,

Czasem pobieram dane z różnych miejsc sieci przy pomocy parsera i wyrażeń regularnych.
Ostatnio coraz częściej pojawi mi się pewien problem, tzn gdy pobieram z danego źródła wiele rekordów, a każdy rekord jest określony przez np tytuł,opis,adres www,email to
to wsztstko mi się pobiera, ale czasem dane, np adres www przypisuje się do nie tego rekordu co trzeba.

Najlepiej widać to na pf.pl:
http://panoramafirm.pl/dom/firmy,2.html?sort=2


Jak widać na przykładzie, czasem nie jest podany ani email lub/i strona www.
W tym momencie mój skrypt 'wariuje' i zamiast przypisać pusty adres lub strone, przypisuje kolejny który znajdzie.

Czy istnieje jakaś możliwość przerobienia moich wyrażeń, tak żeby sprawdzały po prostu każdy 'blok firmy' i zakładały że w każdym z nich muszą się znaleźć wszystkie dane a jeśli w nim nie ma np adresu email, to nie przypisywały kolejnego znalezionego tylko ustawiły $email='pusty'

Nie mam pojęcia czy w ogóle się da coś tekiego wykonać, ale jeśli ktoś może pomóc to będę bardzo wdzięczny smile.gif
Crozin
Przede wszystkim: wyrażenia regularne kompletnie się tutaj nie nadają: you can't parse HTML with regex. Skorzystaj z pierwszego lepszego parsera HTML-a, chociażby DOMDocument.

Sam problem najprawdopodobniej spowodowany jest zachłannością selektorów, Googleaj za frazą php regex greedy
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.