Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

html - parsowanie html'a linijka po linijce

.michal 04 Lip 2013 13:37 1704 8
  • #1 04 Lip 2013 13:37
    .michal
    Poziom 13  

    Witam
    nie mogę znaleźć rozwiązania dla takiego problemu.
    Mam dokument html takiej formie:

    Kategoria w formie linku;
    1 Nazwa w formie tekstu zupełnie bez żadnych atrybutów nawet <p>
    2 tutaj może ale nie musi wystąpić link mailowy który jest parą do poprzedniej nazwy.
    3 kolejne nazwy w sumie max 20 ale może być mniej.
    Dalej powtarzają się już takie same bloki.

    Potrzebuje zapisać wszystko w formie Kategoria>Nazwa>Mail nie mam pomysłu jak to zrobić bo nie wiem jak dostać się do tekstu nazwy. Wcześniej korzystałem z PHP Simple HTML DOM Parser ale tutaj nie umiem wskazać mu tekstu nazwy.

    Kod: html4strict
    Zaloguj się, aby zobaczyć kod


    Może ma ktoś jakieś sugestie będę bardzo wdzięczny
    Z góry dziękuję
    Pozdrawiam
    Michał

    1 8
  • #2 04 Lip 2013 18:04
    Dżyszla
    Poziom 42  

    W takim przypadku pozostaje tylko parsowanie liniowe, a więc nie oparte o model DOM. Może zacznij od podzielenia tekstu względem "<br>" (a więc PHP, funkcja split, jeśli dobrze pamiętam). Uzyskasz wtedy tabelę z poszczególnymi elementami w kolejnych liniach.

    0
  • #3 04 Lip 2013 19:25
    .michal
    Poziom 13  

    Może śmieszne pytanie, ale co mam dzielić? ;)
    Nie bardzo wiem jak przetrzymywać ten kod i jak go wczytać, sorki za durne pytanie jeżeli ktoś tak o tym pomyśli;)

    0
  • #5 04 Lip 2013 21:05
    .michal
    Poziom 13  

    w pliku, trochę lepiej to chyba wygląda bo każda linijka jest w osobnym divie z id rosnącym od 0. próbowałem skorzystać z PHP Simple HTML DOM Parser ale mi nie wychodzi, może ktoś zobaczyć gdzie mam błąd.

    Kod: php
    Zaloguj się, aby zobaczyć kod


    Jeszcze raz dla jasności w divie z id kategoria jest linkiem z określoną klasa a_red, nazwa jest tekstem w divie z id, mail jest linkiem też w divie z id. Wszystkie divy są kolejno po sobie i mają rosnącą numerację czyli jeżeli nazwa ma maila to będzie w divie o 1 większym jeżeli mail będzie w dalszym divie z id to nie łączymy go z nazwą. Będę bardzo wdzięczny jak ktoś mi z tym pomoże. Z góry dziękuje.
    michał

    0
  • #6 05 Lip 2013 10:10
    arnoldziq
    Moderator Programowanie

    .michal napisał:
    Będę bardzo wdzięczny jak ktoś mi z tym pomoże. Z góry dziękuje.

    To niech kolega zamieści jeszcze ,w całości, ten plik 'c.html' bo zgaduję, że nikt z nas nie ma dostępu do kolegi pulpitu :/

    0
  • #7 05 Lip 2013 12:34
    Mr_Unk
    Poziom 17  

    Dżyszla napisał:
    funkcja split, jeśli dobrze pamiętam


    preg_match(), split jest bardzo zdeprecjonowany

    php(dot)net napisał:
    This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.




    Autorze - poczytaj sobie o wyrażeniach regularnych (regular expressions), PREG'iem sobie wyciągniesz, co potrzeba w 90% przypadków. Ze swojej strony mogę polecić testery online, np:

    Tester wyrażeń regularnych

    0
  • #9 14 Lip 2013 20:39
    the_fifth_horseman
    Poziom 32  

    To co napisał Dżyszla - explode() i reszta już z górki.

    Kod: php
    Zaloguj się, aby zobaczyć kod

    0