Piotr Ż.

Piotr Ż. łowca zleceń

Temat: Pobranie danych tekstowych ze strony html i przypisanie...

Witam,

w php niestety stawiam pierwsze kroki, nie do przejścia okazał się dla mnie (być może prosty?) problem:

mam na stronie istniejący kod html w szablonie:

<p>
<fragment kodu 1a> nazwadomeny1.pl <fragment kodu 1b>
<fragment kodu 2a> nazwadomeny2.pl <fragment kodu 2b>
<fragment kodu 3a> nazwadomeny3.pl <fragment kodu 3b>
.
.
.
<fragment kodu 20a> nazwadomeny20.pl <fragment kodu 20b>
</p>

Czy jest prosty sposób na zczytanie pomiędzy znacznikami <p> a </p> nazwadomeny1.pl do nazwadomeny20.pl by były dostępne w zmiennych od 1 do 20 i mogły wpływać na zmiany kodu <fragment kodu 1a,b> ...<fragment kodu 20a,b>

z góry dziękuje za wszystkie podpowiedzi.

Temat: Pobranie danych tekstowych ze strony html i przypisanie...

http://pl.php.net/manual/en/function.preg-match.php
wrzucasz wyniki preg_matcha do tablicy i lecisz po kolei

konto usunięte

Temat: Pobranie danych tekstowych ze strony html i przypisanie...

Przy takim prostym kodzie HTML regexpy sprawdzają się bardzo dobrze. Przy bardziej skomplikowanych stronach zaczyna się robić problem, bo tak naprawdę nie do tego zostały stworzone (HTML nie jest językiem regularnym :)) i prostsze okazuje się np. użycie Simple XMLa:

http://php.net.pl/manual/pl/function.simplexml-load-st...
Piotr Ż.

Piotr Ż. łowca zleceń

Temat: Pobranie danych tekstowych ze strony html i przypisanie...

Spróbuję,
dziękuję za podpowiedzi, jednak biorąc pod uwagę fakt, że w php to raczej czuje się jak przedszkolak, zabieram się na dobre za manuala :)

konto usunięte

Temat: Pobranie danych tekstowych ze strony html i przypisanie...


// <fragment kodu 3a> nazwadomeny3.pl <fragment kodu 3b>
$html = '<fragment kodu 3a> nazwadomeny3.pl <fragment kodu 3b>';

$c = preg_match_all("/<fragment kodu (.*?)>(.*?)<\/fragment kodu (.*?)>/", $html, $o);

if($c > 0)
foreach($o[2] as $domain) {
echo '<p>'.$domain.'</p>';
}
Robert P.

Robert P. Senior PHP Developer

Temat: Pobranie danych tekstowych ze strony html i przypisanie...

Jeśli czytasz to przez CURL-a lub jeśli tam będą znaki nowej linii to musisz uważać na modyfikatory wyrażeń regularnych często przydaje się modyfikator "i" oraz "m" pierwszy mówi o tym, iż wielkość liter nie ma znaczenia, drugi natomiast ignoruje znaki nowej lini i traktuje cały tekst jako jedną linię.

samo pobieranie możesz zrealizować przez funkcje preg_match lub preg_match_all zależy czy chcesz pobrać tylko 1 wyrażenie czy jakieś podwyrażenia. Podwyrażenie pobiera się za pomocą () w wyrażeniu regularnym.

czyli znacznik <p>tekst</p> można pobrać

"/\<p\>([^<]*?)\<\/p\>/mi" lub
"/\<p\>(.*?)\<\/p\>/mi" itd.

poczytaj również o "zachłanności" bo czasami się może zdać np coś takiego

<p> tekst</p>cos tam<p>asdffas</p> i jeżeli nie zastosujesz modyfikatora zachłanności to wyrażenie pobierze zamiast

"<p> tekst</p>"


" tekst</p>cos tam<p>asdffas</p>"

Pozdrawiam :)Robert P. edytował(a) ten post dnia 05.07.11 o godzinie 15:32

konto usunięte

Temat: Pobranie danych tekstowych ze strony html i przypisanie...

DOMDocument
Daniel Częstki

Daniel Częstki senior php developer

Temat: Pobranie danych tekstowych ze strony html i przypisanie...

Krzysztof Z.:
DOMDocument

tez chcialem to zaproponowac :)

konto usunięte

Temat: Pobranie danych tekstowych ze strony html i przypisanie...

Daniel Częstki:
Krzysztof Z.:
DOMDocument

tez chcialem to zaproponowac :)

Zacząłem ostatnio zgłębiać temat parsowania HTMLa. I niestety, wszystko pięknie, dopóki HTML jest dobrze skonstruowany i się wczyta przez loadHTML. Wystarczy, że gdzieś brakuje zamknięcia jednego tagu i już się gubi. Nie zadziała wtedy poprawnie ani getElementById ani XPath. :)

Przydałoby się jakieś ogniwo pośrednie, np. htmlTidy, który najpierw naprawi HTML, niestety ten projekt nie jest już od dawna rozwijany...Adam Michalski edytował(a) ten post dnia 09.07.11 o godzinie 00:33
Michał Sznurawa

Michał Sznurawa Scala Developer

Temat: Pobranie danych tekstowych ze strony html i przypisanie...

Adam Michalski:

Przydałoby się jakieś ogniwo pośrednie, np. htmlTidy, który najpierw naprawi HTML, niestety ten projekt nie jest już od dawna rozwijany...

http://htmlpurifier.org/



Wyślij zaproszenie do